yuansh 2 years ago
parent
commit
b30f940f4f

+ 9 - 0
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/TbTableInfoMapper.java

@@ -36,4 +36,13 @@ public interface TbTableInfoMapper extends BaseMapper<TbTableInfo> {
     @Select("select  COLUMN_NAME as columnName, column_comment as columnComment from information_schema.columns where table_name in (\n" +
             "SELECT a.table_name FROM information_schema.columns as a WHERE column_name=#{tableItemPrantId})")
     List<Map<String,Object>> getTableItemColumnList(@Param("tableItemPrantId") String tableItemPrantId);
+
+    /**
+     * 获取工作流中具体的值
+     * @param
+     * @return
+     */
+    @Select("select text_ from act_hi_varinst where PROC_INST_ID_ = #{procInstId} and name_ = #{columnName}")
+    String getColumnValueList(@Param("procInstId") String procInstId,@Param("columnName") String columnName);
+
 }

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

@@ -118,7 +118,7 @@ public class ActBusinessController {
             actBusiness.setTableName(tableName);
             actBusiness.setPkOrg(sysUser.getOrgCode());//公司id
             actBusinessService.save(actBusiness);
-            String processInstId = submit(actBusiness,node);
+//            String processInstId = submit(actBusiness,node);
             //SkipFireStep(processInstId,sysUser);
             result.success("操作成功");
 

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

@@ -0,0 +1,92 @@
+package org.jeecg.modules.activiti.listener;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.activiti.engine.delegate.*;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.activiti.mapper.TbTableInfoMapper;
+import org.jeecg.modules.system.mapper.SysUserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 流程监听,请假人实际请假时长,如果单位是天,要回写到员工档案年假里做扣减
+ */
+@Component
+public class ListenerAnnualLeave implements TaskListener, JavaDelegate {
+
+	private Expression json;
+
+	@Autowired
+	private TbTableInfoMapper tbTableInfoMapper;
+
+	@Autowired
+	private SysUserMapper sysUserMapper;
+
+	@Override
+	public void notify(DelegateTask delegateTask){
+		System.out.println("-------------1");
+	}
+
+	@Override
+	public void execute(DelegateExecution delegateExecution){
+
+		String jsonString = json.getExpressionText();
+		JSONObject jsonObject = JSON.parseObject(jsonString);
+		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)){
+			return;
+		}
+
+		if(!delegateExecution.getVariableInstances().containsKey(field_unit) ||
+				!delegateExecution.getVariableInstances().containsKey(field_practical) ||
+				!delegateExecution.getVariableInstances().containsKey(field_name)){
+			return;
+		}
+
+		String unit = delegateExecution.getVariableInstances().get(field_unit).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)){
+			return;
+		}
+
+		if(unit.equals("2")){
+			try {
+				sysUserMapper.updateAnnualInfo(employe_name,Double.valueOf(practical_leave));
+			}catch (Exception e){
+				System.out.println(e.getMessage());
+			}
+
+		}
+
+
+//		String regular_whether1 = tbTableInfoMapper.getColumnValueList(delegateExecution.getProcessInstanceId(),regular_whether);
+//		if(StringUtils.isNotBlank(regular_whether1) && regular_whether1.equals("1")){
+//
+//			String regular_employee1 = tbTableInfoMapper.getColumnValueList(delegateExecution.getProcessInstanceId(),regular_employee);
+//			String regular_date1 = tbTableInfoMapper.getColumnValueList(delegateExecution.getProcessInstanceId(),regular_date);
+//
+//			if(StringUtils.isNotBlank(regular_employee1) && StringUtils.isNotBlank(regular_date1)){
+//				sysUserMapper.updateTypeInfo(regular_employee1,regular_date1,"转正");
+//			}
+//
+//		}
+
+//
+//		System.out.println("-------------1");
+//		System.out.println(delegateExecution.getProcessInstanceId());
+//		System.out.println(regular_employee);
+//		System.out.println(regular_date);
+//		System.out.println(regular_whether);
+
+
+
+	}
+
+}

+ 110 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/activiti/listener/ListenerChangeUser.java

@@ -0,0 +1,110 @@
+package org.jeecg.modules.activiti.listener;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.delegate.*;
+import org.activiti.engine.history.HistoricTaskInstance;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.SecurityUtils;
+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.oConvertUtils;
+import org.jeecg.modules.activiti.entity.ActBusiness;
+import org.jeecg.modules.activiti.entity.ActivitiConstant;
+import org.jeecg.modules.activiti.mapper.TbTableInfoMapper;
+import org.jeecg.modules.activiti.service.Impl.ActBusinessServiceImpl;
+import org.jeecg.modules.message.entity.SysMessageTemplate;
+import org.jeecg.modules.message.service.ISysMessageTemplateService;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.mapper.SysUserMapper;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 流程监听,转正申请单里的转正日期在审批结束后回写至员工档案转正日期
+ */
+@Component
+public class ListenerChangeUser implements TaskListener, JavaDelegate {
+
+	private Expression json;
+
+	@Autowired
+	private TbTableInfoMapper tbTableInfoMapper;
+
+	@Autowired
+	private SysUserMapper sysUserMapper;
+
+	@Override
+	public void notify(DelegateTask delegateTask){
+		System.out.println("-------------1");
+	}
+
+	@Override
+	public void execute(DelegateExecution delegateExecution){
+
+		String jsonString = json.getExpressionText();
+		JSONObject jsonObject = JSON.parseObject(jsonString);
+		String regular_employee = oConvertUtils.getString(jsonObject.get("field_employee")); //转正人员
+		String regular_date = oConvertUtils.getString(jsonObject.get("field_date")); //转正日期
+		String regular_whether = oConvertUtils.getString(jsonObject.get("field_whether")); //是否转正 1是
+
+		if(StringUtils.isBlank(regular_employee) && StringUtils.isBlank(regular_date) && StringUtils.isBlank(regular_whether)){
+			return;
+		}
+
+		if(!delegateExecution.getVariableInstances().containsKey(regular_employee) ||
+				!delegateExecution.getVariableInstances().containsKey(regular_date) ||
+				!delegateExecution.getVariableInstances().containsKey(regular_whether)){
+			return;
+		}
+
+		String regular_employee1 = delegateExecution.getVariableInstances().get(regular_employee).getTextValue();
+		String regular_date1 = delegateExecution.getVariableInstances().get(regular_date).getTextValue();
+		String regular_whether1 = delegateExecution.getVariableInstances().get(regular_whether).getTextValue();
+
+		if(StringUtils.isBlank(regular_employee1) && StringUtils.isBlank(regular_date1) && StringUtils.isBlank(regular_whether1)){
+			return;
+		}
+		if(regular_whether1.equals("1")){
+			try {
+				sysUserMapper.updateTypeInfo(regular_employee1,regular_date1,"转正");
+			}catch (Exception e){
+				System.out.println(e.getMessage());
+			}
+
+		}
+
+//		String regular_whether1 = tbTableInfoMapper.getColumnValueList(delegateExecution.getProcessInstanceId(),regular_whether);
+//		if(StringUtils.isNotBlank(regular_whether1) && regular_whether1.equals("1")){
+//
+//			String regular_employee1 = tbTableInfoMapper.getColumnValueList(delegateExecution.getProcessInstanceId(),regular_employee);
+//			String regular_date1 = tbTableInfoMapper.getColumnValueList(delegateExecution.getProcessInstanceId(),regular_date);
+//
+//			if(StringUtils.isNotBlank(regular_employee1) && StringUtils.isNotBlank(regular_date1)){
+//				sysUserMapper.updateTypeInfo(regular_employee1,regular_date1,"转正");
+//			}
+//
+//		}
+
+//
+//		System.out.println("-------------1");
+//		System.out.println(delegateExecution.getProcessInstanceId());
+//		System.out.println(regular_employee);
+//		System.out.println(regular_date);
+//		System.out.println(regular_whether);
+
+
+
+	}
+
+}

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

@@ -17,6 +17,7 @@ import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.activiti.entity.ActBusiness;
 import org.jeecg.modules.activiti.entity.ActivitiConstant;
 import org.jeecg.modules.activiti.service.IActBusinessService;
 import org.jeecg.modules.activiti.service.Impl.ActBusinessServiceImpl;
@@ -85,7 +86,7 @@ public class ListenerSendMessage implements TaskListener, JavaDelegate {
 				SysMessageTemplate sysMessageTemplate = sysMessageTemplateList.get(0);
 				ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(delegateExecution.getProcessInstanceId()).singleResult();
 				String taskName = pi.getProcessDefinitionKey();
-				HashMap<String,String> userAndTask = getFirstUserAndTaskId(delegateExecution.getProcessInstanceId());
+				HashMap<String,String> userAndTask = getFirstUserAndTaskId2(delegateExecution.getProcessInstanceId());
 				String taskId = oConvertUtils.getString(userAndTask.get("taskId"));
 				String applyUser = oConvertUtils.getString(userAndTask.get("user"));
 				String username = oConvertUtils.getString(userAndTask.get("username"));
@@ -112,6 +113,30 @@ public class ListenerSendMessage implements TaskListener, JavaDelegate {
 
 	}
 
+	/**
+	 * 获取发起人信息
+	 * @param processInstId
+	 * @return
+	 */
+	protected HashMap<String,String> getFirstUserAndTaskId2(String processInstId) {
+
+		HashMap<String,String> ret = new HashMap<>();
+
+		List<ActBusiness> list = actBusinessService.findByProcInstId(processInstId);
+		if(list.size() > 0){
+			String userid = list.get(0).getUserId();
+			LoginUser loginUser = sysBaseAPI.getUserByName(userid);
+			ret.put("user", loginUser.getRealname());
+			ret.put("username", loginUser.getUsername());
+		}else{
+			LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+			ret.put("user", loginUser.getRealname());
+			ret.put("username", loginUser.getUsername());
+		}
+
+		return ret;
+	}
+
 	protected HashMap<String,String> getFirstUserAndTaskId(String processInstId) {
 		HashMap<String,String> ret = new HashMap<>();
 		List<HistoricTaskInstance> taskList = historyService.createHistoricTaskInstanceQuery()

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

@@ -269,15 +269,15 @@ public class SysUser implements Serializable {
     /**年假*/
     @Excel(name = "年假", width = 15)
     @ApiModelProperty(value = "年假")
-    private java.lang.Integer nAnnualNum;
+    private java.lang.Double nAnnualNum;
     /**已请年假天数*/
     @Excel(name = "已请年假天数", width = 15)
     @ApiModelProperty(value = "已请年假天数")
-    private java.lang.String nAnnualOldNum;
+    private java.lang.Double nAnnualOldNum;
     /**剩余年假天数*/
     @Excel(name = "剩余年假天数", width = 15)
     @ApiModelProperty(value = "剩余年假天数")
-    private java.lang.Integer nAnnualNowNum;
+    private java.lang.Double nAnnualNowNum;
     /**民族*/
     @Excel(name = "民族", width = 15)
     @ApiModelProperty(value = "民族")

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

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.jeecg.modules.system.model.SysUserSysDepartModel;
 import org.jeecg.modules.system.vo.SysUserDepVo;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -21,6 +22,19 @@ import java.util.List;
  * @since 2018-12-20
  */
 public interface SysUserMapper extends BaseMapper<SysUser> {
+	/**
+	  * 更新员工转正日期,与转正状态
+	 * @param username
+	 * @return
+	 */
+	public int updateTypeInfo(@Param("username") String username, @Param("becomeTime") String becomeTime, @Param("personnelType") String personnelType);
+	/**
+	  * 更新员工的剩余年假,已用年假
+	 * @param username
+	 * @return
+	 */
+	public int updateAnnualInfo(@Param("username") String username,@Param("num") Double num);
+
 	/**
 	  * 通过用户账号查询用户信息
 	 * @param username

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

@@ -37,6 +37,7 @@
 	   <if test="pkOrg!=null and pkOrg!=''">
 		  AND pk_org =#{pkOrg}
 	   </if>
+		order by send_time desc
 	</select>
 
 </mapper>

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

@@ -2,6 +2,16 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.system.mapper.SysUserMapper">
 
+	<update id="updateTypeInfo">
+		update 	sys_user set n_become_time = #{becomeTime} , n_personnel_type = #{personnelType}
+		where username = #{username}
+	</update>
+
+	<update id="updateAnnualInfo">
+		update 	sys_user set n_annual_old_num = n_annual_old_num + #{num} , n_annual_now_num = n_annual_now_num - #{num}
+		where username = #{username}
+	</update>
+
 	<!-- 根据用户名查询 -->
 	<select id="getUserByName" resultType="org.jeecg.modules.system.entity.SysUser">
 		select * from  sys_user  where username = #{username} and del_flag = '0'

+ 1 - 0
jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml

@@ -97,6 +97,7 @@ spring:
       datasource:
         master:
           url: jdbc:mysql://127.0.0.1:3306/cd_work_flow_dev?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&useSSL=false
+#          url: jdbc:mysql://192.168.5.170:3306/cd_work_flow_dev?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&useSSL=false
           username: root
           password: root
           driver-class-name: com.mysql.jdbc.Driver