Преглед изворни кода

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

# Conflicts:
#	mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java
周箭河 пре 5 година
родитељ
комит
c558a3c4f1
30 измењених фајлова са 353 додато и 282 уклоњено
  1. 9 0
      cms/src/main/java/com/ym/mec/cms/config/WebMvcConfig.java
  2. 3 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebMvcConfig.java
  3. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java
  4. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  5. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/NamesDto.java
  6. 15 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java
  7. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  9. 17 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  10. 13 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  11. 6 6
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  12. 109 101
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  13. 2 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  14. 2 2
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  15. 12 2
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  16. 3 1
      mec-education/src/main/java/com/ym/mec/education/config/WebMvcConfig.java
  17. 3 1
      mec-im/src/main/java/com/ym/config/WebMvcConfig.java
  18. 3 1
      mec-student/src/main/java/com/ym/mec/student/config/WebMvcConfig.java
  19. 3 1
      mec-task/src/main/java/com/ym/mec/task/config/WebMvcConfig.java
  20. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java
  21. 3 1
      mec-teacher/src/main/java/com/ym/mec/teacher/config/WebMvcConfig.java
  22. 14 13
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/OrderController.java
  23. 41 127
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TaskController.java
  24. 3 1
      mec-web/src/main/java/com/ym/mec/web/config/WebMvcConfig.java
  25. 3 3
      mec-web/src/main/java/com/ym/mec/web/controller/education/EmployeeController.java
  26. 9 7
      mec-workflow/src/main/java/com/ym/mec/workfow/config/WebMvcConfig.java
  27. 8 3
      mec-workflow/src/main/java/com/ym/mec/workfow/controller/web/LeaveController.java
  28. 7 0
      workflowy/src/main/java/org/snaker/engine/IOrderService.java
  29. 8 1
      workflowy/src/main/java/org/snaker/engine/core/OrderService.java
  30. 1 1
      workflowy/src/main/java/org/snaker/engine/handlers/impl/EndProcessHandler.java

+ 9 - 0
cms/src/main/java/com/ym/mec/cms/config/WebMvcConfig.java

@@ -9,6 +9,7 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
@@ -98,6 +99,14 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				}
 			}
 		});
+		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
+			@Override
+			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
+				}
+			}
+		});
 
 		objectMapper.registerModule(javaTimeModule);
 		return objectMapper;

+ 3 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebMvcConfig.java

@@ -61,7 +61,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
 			@Override
 			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
+				}
 			}
 		});
 		// 日期和时间格式化

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java

@@ -53,4 +53,16 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
      */
     SysUser queryByPhone(String phone);
 
+    /**
+     * 删除用户角色
+     * @param userId
+     */
+    void delEmployeeRole(Integer userId);
+
+    /**
+     * 批量新增用户角色
+     * @param id
+     * @param roleIds
+     */
+    void batchAddEmployeeRole(@Param("userId") Integer id, @Param("roleIds")List<Integer> roleIds);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.NamesDto;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.common.dal.BaseDAO;
 
@@ -9,6 +10,7 @@ import com.ym.mec.common.entity.ImGroupModel;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
@@ -38,4 +40,10 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     List<BasicUserDto> queryGroupStudents(@Param("teacherId") Integer teacherId, @Param("search") String search);
+
+    /**
+     * 获取教师的专业技能
+     * @return
+     */
+    List<NamesDto> getTeacherSubNames(String teacherIds);
 }

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/NamesDto.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.List;
+
+public class NamesDto {
+    private Integer id;
+
+    private List<String> names;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public List<String> getNames() {
+        return names;
+    }
+
+    public void setNames(List<String> names) {
+        this.names = names;
+    }
+}

+ 15 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java

@@ -8,6 +8,8 @@ import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.List;
+
 /**
  * 对应数据库表(employee):
  */
@@ -65,11 +67,22 @@ public class Employee extends SysUser {
 	/** 离职日期 */
 	@ApiModelProperty(value = "离职日期",required = false)
 	private java.util.Date demissionDate;
-	
+
+	@ApiModelProperty(value = "角色id列表",required = false)
+	private List<Integer> roleIds;
+
+	public List<Integer> getRoleIds() {
+		return roleIds;
+	}
+
+	public void setRoleIds(List<Integer> roleIds) {
+		this.roleIds = roleIds;
+	}
+
 	public void setUserId(Integer userId){
 		this.userId = userId;
 	}
-	
+
 	public Integer getUserId(){
 		return this.userId;
 	}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
+import java.util.List;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -52,6 +53,10 @@ public class Teacher extends SysUser {
 	@ApiModelProperty(value = "专业技能(支持多个,用逗号分隔),对应科目表编号", required = false)
 	private String subjectId;
 
+	/** 专业技能(支持多个,用|分隔),对应科目表编号 */
+	@ApiModelProperty(value = "专业技能(支持多个,用逗号分隔),对应科目表名称", required = false)
+	private String subjectName;
+
 	/** 入职时间 */
 	@ApiModelProperty(value = "入职时间", required = false)
 	private java.util.Date entryDate;
@@ -68,6 +73,10 @@ public class Teacher extends SysUser {
 	@ApiModelProperty(value = "流动范围(多个用逗号分开)", required = false)
 	private String flowOrganRange;
 
+	/** 流动范围(多个用|分开) */
+	@ApiModelProperty(value = "流动范围(多个用逗号分开)", required = false)
+	private List<String> flowOrganRangeName;
+
 	@ApiModelProperty(value = "老师介绍", required = false)
 	private String introduction;
 	

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java

@@ -16,7 +16,7 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
      * @Date: 2019/9/17
      * 根据部门获取下面的员工
      */
-    PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException;
+    PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception;
 
     /**
      * @Author: Joburgess

+ 17 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -59,6 +59,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 			if(employee1 == null || employee1.getId() == null){
 				employee.setUserId(user.getId());
 				employeeDao.insert(employee);
+				//删除当前用户角色
+				employeeDao.delEmployeeRole(user.getId());
+				//新增用户角色
+				employeeDao.batchAddEmployeeRole(user.getId(),employee.getRoleIds());
 			}
 			return;
 		}
@@ -67,6 +71,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		teacherDao.addSysUser(employee);
 		employee.setUserId(employee.getId());
         employeeDao.insert(employee);
+		//删除当前用户角色
+		employeeDao.delEmployeeRole(employee.getId());
+		//新增用户角色
+		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds());
 		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(), employee.getAvatar()));
 		employee.setImToken(imResult.getToken());
 		employeeDao.update(employee);
@@ -79,8 +87,13 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		if(null==employee1){
 			employeeDao.insert(employee);
 		}else{
+			employee.setUserId(employee.getId());
 			employeeDao.update(employee);
 		}
+		//删除当前用户角色
+		employeeDao.delEmployeeRole(employee.getId());
+		//新增用户角色
+		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds());
 		teacherDao.updateUser(employee);
 	}
 
@@ -93,8 +106,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	}
 
 	@Override
-	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException {
+	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
 		SysUser user = sysUserFeignService.queryUserInfo();
+		if(user == null){
+			throw new Exception("获取用户信息失败");
+		}
 
 		queryInfo.setOrganId(user.getOrganId().longValue());
 		PageInfo<EmployeeDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());

+ 13 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -7,6 +7,7 @@ import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.NamesDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.TeacherQueryInfo;
@@ -19,12 +20,15 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
+import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  implements TeacherService {
@@ -112,7 +116,9 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				teachers.add(musicGroup.getDirectorUserId());
 				teachers.removeAll(Collections.singleton(null));
 				//获取乐团群用户总数
-				e.setCount(musicGroupDao.countMusicGroupUserNum(e.getId()) + teachers.size());
+				Integer count = musicGroupDao.countMusicGroupUserNum(e.getId());
+				int num = count == null?0:count;
+				e.setCount(teachers.size() + num);
 				e.setId("mg" + e.getId());
 			});
 		}else {
@@ -141,10 +147,15 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
 		PageInfo<Teacher> pageInfo = queryPage(queryInfo);
 		List<Teacher> teachers = pageInfo.getRows();
+		//获取老师的专业技能名称列表
+		List<Integer> teacherIds = teachers.stream().map(e -> e.getId()).collect(Collectors.toList());
+		String join = StringUtils.join(teacherIds, ",");
+		List<NamesDto> namesDto = teacherDao.getTeacherSubNames(join);
+		HashMap map = JSON.parseObject(JSON.toJSONString(namesDto), HashMap.class);
 		if(teachers != null && teachers.size() > 0){
 			teachers.forEach(e->{
 				if(StringUtils.isNotEmpty(e.getSubjectId())){
-					e.setSubjectId(JSON.toJSONString(subjectDao.findBySubIds(e.getSubjectId())));
+					e.setSubjectId(StringUtils.join(subjectDao.findBySubIds(e.getSubjectId()),","));
 				}
 			});
 		}

+ 6 - 6
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -31,7 +31,6 @@
         <result column="sign_in_status_" property="signInStatus"/>
         <result column="sign_out_status_" property="signOutStatus"/>
         <result column="seal_class_id_" property="sealClassId"/>
-        <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto" id="studentCourseScheduleRecord">
@@ -276,7 +275,8 @@
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.status_,
 	        su.username_ teacher_name_,
-	        cgsm.status_ attendance_status_
+	        cgsm.status_ attendance_status_,
+	        cs.teach_mode_
         FROM
             course_schedule cs
             LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
@@ -298,16 +298,16 @@
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.status_,
 	        s.name_ school_name_,
-	        cg.teach_mode_,
-	        ta.sign_in_status_ sign_in_status_,
-	        ta.sign_out_status_ sign_out_status_
+	        ta.sign_in_status_,
+	        ta.sign_out_status_,
+	        cg.teach_mode_
         FROM
             course_schedule cs
             LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
             LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
             LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
             LEFT JOIN school s ON mg.school_id_=s.id_
-	        LEFT JOIN teacher_attendance ta ON cs.id_=ta.class_group_id_ AND ta.teacher_id_=#{teacherId}
+	        LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
         WHERE
             cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
             AND cs.teacher_id_ = #{teacherId}

+ 109 - 101
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -6,22 +6,22 @@
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.EmployeeDao">
 
-	<resultMap type="com.ym.mec.biz.dal.entity.Employee" id="Employee">
-		<result column="user_id_" property="userId" />
-		<result column="organ_id_list_" property="organIdList" />
-		<result column="job_nature_" property="jobNature" />
-		<result column="is_probation_period_" property="isProbationPeriod" />
-		<result column="education_background_" property="educationBackground" />
-		<result column="graduate_school_" property="graduateSchool" />
-		<result column="technical_titles_" property="technicalTitles" />
-		<result column="entry_date_" property="entryDate" />
-		<result column="certificate_type_" property="certificateType" />
-		<result column="certificate_num_" property="certificateNum" />
-		<result column="update_time_" property="updateTime" />
-		<result column="create_time_" property="createTime" />
-		<result column="introduction_" property="introduction" />
-		<result column="demission_date_" property="demissionDate" />
-	</resultMap>
+    <resultMap type="com.ym.mec.biz.dal.entity.Employee" id="Employee">
+        <result column="user_id_" property="userId"/>
+        <result column="organ_id_list_" property="organIdList"/>
+        <result column="job_nature_" property="jobNature"/>
+        <result column="is_probation_period_" property="isProbationPeriod"/>
+        <result column="education_background_" property="educationBackground"/>
+        <result column="graduate_school_" property="graduateSchool"/>
+        <result column="technical_titles_" property="technicalTitles"/>
+        <result column="entry_date_" property="entryDate"/>
+        <result column="certificate_type_" property="certificateType"/>
+        <result column="certificate_num_" property="certificateNum"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="introduction_" property="introduction"/>
+        <result column="demission_date_" property="demissionDate"/>
+    </resultMap>
 
     <resultMap type="com.ym.mec.auth.api.entity.SysUser" id="SysUser">
         <result column="id_" property="id"/>
@@ -44,81 +44,85 @@
         <result column="email_" property="email"/>
         <result column="im_token_" property="imToken"/>
         <result column="id_card_no_" property="idCardNo"/>
-        <result column="esign_id_" property="esignId"/>
         <result column="wechat_id_" property="wechatId"/>
     </resultMap>
 
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="Employee" >
-		SELECT * FROM employee WHERE user_id_ = #{userId} 
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="Employee">
+		SELECT * FROM employee WHERE user_id_ = #{userId}
 	</select>
 
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="Employee">
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="Employee">
 		SELECT * FROM employee ORDER BY user_id_
 	</select>
-	
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Employee" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO employee (user_id_,organ_id_list_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,entry_date_,certificate_type_,certificate_num_,update_time_,create_time_,introduction_,demission_date_) VALUES(#{userId},#{organIdList},#{jobNature},#{isProbationPeriod},#{educationBackground},#{graduateSchool},#{technicalTitles},#{entryDate},#{certificateType},#{certificateNum},#{updateTime},#{createTime},#{introduction},#{demissionDate})
-	</insert>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Employee" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        <!--
+        <selectKey resultClass="int" keyProperty="id" >
+        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
+        </selectKey>
+        -->
+        INSERT INTO employee
+        (user_id_,organ_id_list_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,entry_date_,certificate_type_,certificate_num_,update_time_,create_time_,introduction_,demission_date_)
+        VALUES(#{userId},#{organIdList},#{jobNature},#{isProbationPeriod},#{educationBackground},#{graduateSchool},#{technicalTitles},#{entryDate},#{certificateType},#{certificateNum},now(),now(),#{introduction},#{demissionDate})
+    </insert>
+    <insert id="batchAddEmployeeRole">
+        INSERT INTO sys_user_role(user_id_,role_id_) values
+        <foreach collection="roleIds" item="item" index="index" separator=",">
+            (#{userId},#{item})
+        </foreach>
+    </insert>
 
     <select id="queryByPhone" resultMap="SysUser">
 		select * from sys_user where phone_ = #{phone} OR username_ = #{phone}
 	</select>
-	
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.Employee">
-		UPDATE employee <set>
-        <if test="isProbationPeriod != null">
-        is_probation_period_ = #{isProbationPeriod},
-        </if>
-        <if test="graduateSchool != null">
-        graduate_school_ = #{graduateSchool},
-        </if>
-        <if test="organId != null">
-            organ_id_list_ = #{organIdList},
-        </if>
-        <if test="introduction != null">
-        introduction_ = #{introduction},
-        </if>
-        <if test="technicalTitles != null">
-        technical_titles_ = #{technicalTitles},
-        </if>
-        <if test="entryDate != null">
-        entry_date_ = #{entryDate},
-        </if>
-        <if test="jobNature != null">
-        job_nature_ = #{jobNature},
-        </if>
-        <if test="createTime != null">
-        create_time_ = #{createTime},
-        </if>
-        <if test="userId != null">
-        user_id_ = #{userId},
-        </if>
-        <if test="certificateType != null">
-        certificate_type_ = #{certificateType},
-        </if>
-        <if test="updateTime != null">
-        update_time_ = #{updateTime},
-        </if>
-        <if test="educationBackground != null">
-        education_background_ = #{educationBackground},
-        </if>
-        <if test="certificateNum != null">
-        certificate_num_ = #{certificateNum},
-        </if>
-        <if test="demissionDate != null">
-        demission_date_ = #{demissionDate},
-        </if>
-        </set> WHERE user_id_ = #{userId}
-	</update>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.Employee">
+        UPDATE employee
+        <set>
+            <if test="isProbationPeriod != null">
+                is_probation_period_ = #{isProbationPeriod},
+            </if>
+            <if test="graduateSchool != null">
+                graduate_school_ = #{graduateSchool},
+            </if>
+            <if test="organIdList != null">
+                organ_id_list_ = #{organIdList},
+            </if>
+            <if test="introduction != null">
+                introduction_ = #{introduction},
+            </if>
+            <if test="technicalTitles != null">
+                technical_titles_ = #{technicalTitles},
+            </if>
+            <if test="entryDate != null">
+                entry_date_ = #{entryDate},
+            </if>
+            <if test="jobNature != null">
+                job_nature_ = #{jobNature},
+            </if>
+            <if test="certificateType != null">
+                certificate_type_ = #{certificateType},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime},
+            </if>
+            <if test="educationBackground != null">
+                education_background_ = #{educationBackground},
+            </if>
+            <if test="certificateNum != null">
+                certificate_num_ = #{certificateNum},
+            </if>
+            <if test="demissionDate != null">
+                demission_date_ = #{demissionDate},
+            </if>
+        </set>
+        WHERE user_id_ = #{userId}
+    </update>
 
     <update id="updatePassword">
         UPDATE sys_user SET password_ = #{password} WHERE id_ = #{userID}
@@ -132,41 +136,45 @@
     </update>
 
     <!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
+    <delete id="delete">
 		DELETE FROM employee WHERE user_id_ = #{userId} 
 	</delete>
-	
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="Employee" parameterType="map">
-		SELECT * FROM employee ORDER BY user_id_ <include refid="global.limit"/>
-	</select>
-	
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
+    <delete id="delEmployeeRole">
+        DELETE FROM sys_user_role WHERE user_id_ = #{userId}
+    </delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="Employee" parameterType="map">
+        SELECT * FROM employee ORDER BY user_id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM employee
 	</select>
 
 
     <resultMap type="com.ym.mec.biz.dal.dto.EmployeeDto" id="EmployeeDto">
-        <result property="id" column="id_" />
-        <result property="realName" column="real_name_" />
+        <result property="id" column="id_"/>
+        <result property="realName" column="real_name_"/>
         <result property="gender" column="gender_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result property="phone" column="phone_" />
-        <result property="lockFlag" column="lock_flag_" />
-        <result property="jobNature" column="job_nature_" />
-        <result property="entryDate" column="entry_date_" />
-        <result property="demissionDate" column="demission_date_" />
+        <result property="phone" column="phone_"/>
+        <result property="lockFlag" column="lock_flag_"/>
+        <result property="jobNature" column="job_nature_"/>
+        <result property="entryDate" column="entry_date_"/>
+        <result property="demissionDate" column="demission_date_"/>
         <collection property="roleNames" ofType="string" javaType="list">
-            <result column="role_name_" />
+            <result column="role_name_"/>
         </collection>
         <collection property="organNameList" ofType="string" javaType="list">
-            <result column="organ_name_list_" />
+            <result column="organ_name_list_"/>
         </collection>
         <collection property="roleIds" ofType="integer" javaType="list">
-            <result column="role_id_" />
+            <result column="role_id_"/>
         </collection>
         <collection property="organIdList" ofType="Long" javaType="list">
-            <result column="organ_id_list_" />
+            <result column="organ_id_list_"/>
         </collection>
     </resultMap>
     <select id="queryEmployByOrganId" resultMap="EmployeeDto">
@@ -192,5 +200,5 @@
         <if test="search != null">
             AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
         </if>
-	</select>
+    </select>
 </mapper>

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -239,10 +239,10 @@
 		LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
 		WHERE cg.music_group_id_ = #{musicGroupId} GROUP BY su.id_
 	</select>
-	<select id="queryTeacherGroups" resultMap="ImUserModel">
+	<select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
 		SELECT mg.id_,mg.name_,mg.img_ FROM music_group mg
 		WHERE (team_teacher_id_ = #{userId} OR educational_teacher_id_ = #{userId} OR operator_user_id_ = #{userId} OR director_user_id_ = #{userId})
-		<if test="search != null">
+		<if test="search != null and search != ''">
 			AND mg.name_ LIKE CONCAT('%',#{search},'%')
 		</if>
 	</select>

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml

@@ -171,8 +171,8 @@
 		INTERVAL #{recentMin} MINUTE) >= date(send_time_)]]>
 	</select>
 
-	<select id="queryCountOfUnread" resultType="int" parameterType="java.lang.Long">
+	<select id="queryCountOfUnread" resultType="int">
 		select count(*) from sys_message
-		where user_id_ = #{userId,jdbcType=BIGINT} and read_status_ = 0
+		where user_id_ = #{userId} and read_status_ = 0
 	</select>
 </mapper>

+ 12 - 2
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -71,9 +71,9 @@
     <insert id="addSysUser" parameterType="com.ym.mec.auth.api.entity.SysUser" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO sys_user
-        (im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,gender_,nation_,birthdate_,email_,id_card_no_,esign_id_,wechat_id_)
+        (im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,gender_,nation_,birthdate_,email_,id_card_no_,esign_id_,wechat_id_,real_name_,password_)
         VALUES(#{imToken},#{id},#{username},#{salt},#{phone},#{avatar},#{organId},now(),now(),#{wxOpenid},#{qqOpenid},#{userType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{esignId},#{wechatId})
+        #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{esignId},#{wechatId},#{realName},#{password})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -248,4 +248,14 @@
             AND su.username_ LIKE CONCAT('%',#{search},'%')
         </if>
     </select>
+
+    <resultMap id="namesDto" type="com.ym.mec.biz.dal.dto.NamesDto">
+        <result property="id" column="id_"/>
+        <collection property="names" javaType="list" ofType="string" column="name_"/>
+    </resultMap>
+    <select id="getTeacherSubNames" resultMap="namesDto">
+        SELECT s.name_,t.id_ FROM teacher t
+        LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
+        WHERE t.id_ IN (#{teacherIds})
+    </select>
 </mapper>

+ 3 - 1
mec-education/src/main/java/com/ym/mec/education/config/WebMvcConfig.java

@@ -63,7 +63,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
 			@Override
 			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
+				}
 			}
 		});
 		// 日期和时间格式化

+ 3 - 1
mec-im/src/main/java/com/ym/config/WebMvcConfig.java

@@ -55,7 +55,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
 			@Override
 			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
+				}
 			}
 		});
 		// 日期和时间格式化

+ 3 - 1
mec-student/src/main/java/com/ym/mec/student/config/WebMvcConfig.java

@@ -61,7 +61,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
 			@Override
 			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
+				}
 			}
 		});
 		// 日期和时间格式化

+ 3 - 1
mec-task/src/main/java/com/ym/mec/task/config/WebMvcConfig.java

@@ -61,7 +61,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
 			@Override
 			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
+				}
 			}
 		});
 		// 日期和时间格式化

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java

@@ -17,7 +17,7 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 @EnableDiscoveryClient
 @EnableFeignClients("com.ym.mec")
 @MapperScan("com.ym.mec.biz.dal.dao")
-@ComponentScan(basePackages = "com.ym.mec")
+@ComponentScan(basePackages = { "com.ym.mec", "org.snaker.engine" })
 @Configuration
 @EnableSwagger2Doc
 public class TeacherApplication {

+ 3 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/config/WebMvcConfig.java

@@ -61,7 +61,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
 			@Override
 			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
+				}
 			}
 		});
 		// 日期和时间格式化

+ 14 - 13
mec-teacher/src/main/java/com/ym/mec/teacher/controller/OrderController.java

@@ -1,15 +1,16 @@
 package com.ym.mec.teacher.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
 import org.snaker.engine.SnakerEngine;
-import org.snaker.engine.access.Page;
 import org.snaker.engine.access.QueryFilter;
-import org.snaker.engine.entity.HistoryOrder;
 import org.snaker.engine.entity.HistoryTask;
+import org.snaker.engine.entity.Order;
 import org.snaker.engine.entity.Process;
 import org.snaker.engine.entity.Task;
 import org.snaker.engine.helper.AssertHelper;
@@ -25,6 +26,7 @@ import com.ym.mec.common.controller.BaseController;
 
 @RestController
 @RequestMapping(value = "/snaker/order")
+@Api(tags = "流程实例")
 public class OrderController extends BaseController {
 
 	@Autowired
@@ -40,6 +42,7 @@ public class OrderController extends BaseController {
 	 * @return
 	 */
 	@PostMapping(value = "setCcread")
+	@ApiOperation("抄送实例设置已读")
 	public Object ccread(String orderId) {
 		SysUser user = SysUserFeignService.queryUserInfo();
 
@@ -48,22 +51,20 @@ public class OrderController extends BaseController {
 	}
 
 	@GetMapping(value = "detail")
+	@ApiOperation("流程实例进度")
 	public Object json(String processId, String orderId) {
 		Process process = snakerEngine.process().getProcessById(processId);
 		AssertHelper.notNull(process);
 		Map<String, Object> jsonMap = new HashMap<String, Object>();
-		/*ProcessModel model = process.getModel();
-		if (model != null) {
-			jsonMap.put("process", model);
-		}*/
 
-		if (StringUtils.isNotEmpty(orderId)) {
-			List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(orderId));
-			jsonMap.put("tasks", tasks);
+		Order order = snakerEngine.query().getOrder(orderId);
+		jsonMap.put("order", order);
+
+		List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(orderId));
+		jsonMap.put("tasks", tasks);
 
-			List<HistoryTask> historyTasks = snakerEngine.query().getHistoryTasks(new QueryFilter().setOrderId(orderId));
-			jsonMap.put("historyTasks", historyTasks);
-		}
+		List<HistoryTask> historyTasks = snakerEngine.query().getHistoryTasks(new QueryFilter().setOrderId(orderId));
+		jsonMap.put("historyTasks", historyTasks);
 		return jsonMap;
 	}
 

+ 41 - 127
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TaskController.java

@@ -1,23 +1,17 @@
 package com.ym.mec.teacher.controller;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 
-import org.apache.commons.lang.StringUtils;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.QueryFilter;
 import org.snaker.engine.core.AccessService;
 import org.snaker.engine.entity.HistoryOrder;
-import org.snaker.engine.entity.Task;
 import org.snaker.engine.entity.WorkItem;
-import org.snaker.engine.model.TaskModel.TaskType;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.ui.ModelMap;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -32,6 +26,7 @@ import com.ym.mec.common.controller.BaseController;
  */
 @RestController
 @RequestMapping(value = "/snaker/task")
+@Api(tags = "流程任务")
 public class TaskController extends BaseController {
 
 	@Autowired
@@ -40,170 +35,89 @@ public class TaskController extends BaseController {
 	@Autowired
 	private SysUserFeignService SysUserFeignService;
 
-	@GetMapping(value = "home")
-	public Object homeTaskList() {
-
-		SysUser user = SysUserFeignService.queryUserInfo();
-
-		List<String> list = new ArrayList<String>();
-		list.add(user.getUsername());
-
-		String[] assignees = new String[list.size()];
-		list.toArray(assignees);
-
-		Page<WorkItem> majorPage = new Page<WorkItem>(5);
-		Page<WorkItem> aidantPage = new Page<WorkItem>(3);
-		Page<HistoryOrder> ccorderPage = new Page<HistoryOrder>(3);
-		List<WorkItem> majorWorks = snakerEngine.query().getWorkItems(majorPage,
-				new QueryFilter().setOperators(assignees).setTaskType(TaskType.Major.ordinal()));
-		List<WorkItem> aidantWorks = snakerEngine.query().getWorkItems(aidantPage,
-				new QueryFilter().setOperators(assignees).setTaskType(TaskType.Aidant.ordinal()));
-		List<HistoryOrder> ccWorks = snakerEngine.query().getCCWorks(ccorderPage, new QueryFilter().setOperators(assignees).setState(1));
-
-		ModelMap model = new ModelMap();
-		
-		model.addAttribute("majorWorks", majorWorks);
-		model.addAttribute("majorTotal", majorPage.getTotalCount());
-		model.addAttribute("aidantWorks", aidantWorks);
-		model.addAttribute("aidantTotal", aidantPage.getTotalCount());
-		model.addAttribute("ccorderWorks", ccWorks);
-		model.addAttribute("ccorderTotal", ccorderPage.getTotalCount());
-		return succeed(model);
-	}
-
 	/**
-	 * 根据当前用户查询我发起的任务列表
+	 * 查询我发起的任务列表
 	 * @param model
 	 * @return
 	 */
-	@GetMapping(value = "queryCreatedList")
-	public Object queryCreatedList(Page<HistoryOrder> page) {
+	@GetMapping(value = "queryMyCreatedList")
+	@ApiOperation("查询我发起的任务列表")
+	public Object queryMyCreatedList(Page<HistoryOrder> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
 
-		snakerEngine.query().getHistoryOrders(page, new QueryFilter().setOperator(user.getUsername()));
+		snakerEngine.query().getHistoryOrders(page, new QueryFilter().setOperator(user.getId()+""));
 		return succeed(page);
 	}
 
 	/**
-	 * 根据当前用户查询待办任务列表
+	 * 查询我待办任务列表
 	 * @param model
 	 * @return
 	 */
 	@GetMapping(value = "queryWaitList")
+	@ApiOperation("查询我待办任务列表")
 	public Object queryWaitList(Page<WorkItem> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
 
 		snakerEngine.query().getWorkItems(page, new QueryFilter().setOperator(user.getUsername()));
 		return succeed(page);
 	}
 
 	/**
-	 * 根据当前用户查询已办任务列表
+	 * 查询已办任务列表
 	 * @param model
 	 * @return
 	 */
-	@GetMapping(value = "querypProcessedList")
-	public Object querypProcessedList(Page<WorkItem> page) {
+	@GetMapping(value = "queryProcessedList")
+	@ApiOperation("查询我已办任务列表")
+	public Object queryProcessedList(Page<WorkItem> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
-
-		snakerEngine.query().getHistoryWorkItems(page, new QueryFilter().setOperator(user.getUsername()));
-		return succeed(page);
-	}
-
-	@PostMapping(value = "actor/add")
-	public Object addTaskActor(String orderId, String taskName, String operator) {
-		List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(orderId));
-		for (Task task : tasks) {
-			if (task.getTaskName().equalsIgnoreCase(taskName) && StringUtils.isNotEmpty(operator)) {
-				snakerEngine.task().addTaskActor(task.getId(), operator);
-			}
-		}
-		return succeed();
-	}
-
-	@GetMapping(value = "tip")
-	public Object addTaskActor(String orderId, String taskName) {
-		List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(orderId));
-		StringBuilder builder = new StringBuilder();
-		String createTime = "";
-		for (Task task : tasks) {
-			if (task.getTaskName().equalsIgnoreCase(taskName)) {
-				String[] actors = snakerEngine.query().getTaskActorsByTaskId(task.getId());
-				for (String actor : actors) {
-					builder.append(actor).append(",");
-				}
-				createTime = task.getCreateTime();
-			}
-		}
-		if (builder.length() > 0) {
-			builder.deleteCharAt(builder.length() - 1);
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		Map<String, String> data = new HashMap<String, String>();
-		data.put("actors", builder.toString());
-		data.put("createTime", createTime);
-		return succeed(data);
-	}
 
-	/**
-	 * 活动任务查询列表
-	 * @param model
-	 * @return
-	 */
-	@GetMapping(value = "active/more")
-	public Object activeTaskList(Page<WorkItem> page, Integer taskType) {
-		SysUser user = SysUserFeignService.queryUserInfo();
-
-		List<String> list = new ArrayList<String>();
-		list.add(user.getUsername());
-
-		String[] assignees = new String[list.size()];
-		list.toArray(assignees);
-		snakerEngine.query().getWorkItems(page, new QueryFilter().setOperators(assignees).setTaskType(taskType));
+		snakerEngine.query().getHistoryWorkItems(page, new QueryFilter().setOperator(user.getId()+""));
 		return succeed(page);
 	}
 
 	/**
-	 * 活动任务查询列表
+	 * 抄送我的已读列表
 	 * @param model
 	 * @return
 	 */
-	@GetMapping(value = "active/ccmore")
-	public Object activeCCList(Page<HistoryOrder> page) {
+	@GetMapping(value = "queryCCReadList")
+	@ApiOperation("抄送我的已读列表")
+	public Object queryCCReadList(Page<HistoryOrder> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
 
-		List<String> list = new ArrayList<String>();
-		list.add(user.getUsername());
-
-		String[] assignees = new String[list.size()];
-		list.toArray(assignees);
-		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperators(assignees).setState(AccessService.STATE_ACTIVE));
+		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperator(user.getId()+"").setState(AccessService.STATE_FINISH));
 		return succeed(page);
 	}
 
 	/**
-	 * 活动任务的驳回
+	 * 抄送我的未读列表
 	 * @param model
-	 * @param taskId
 	 * @return
 	 */
-	@PostMapping(value = "reject")
-	public Object activeTaskReject(String taskId) {
-
+	@GetMapping(value = "queryCCUnReadList")
+	@ApiOperation("抄送我的未读列表")
+	public Object queryCCUnReadList(Page<HistoryOrder> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
 
-		snakerEngine.executeAndJumpTask(taskId, user.getUsername(), null, null);
-		return succeed();
+		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperator(user.getUsername()).setState(AccessService.STATE_ACTIVE));
+		return succeed(page);
 	}
 
-	/**
-	 * 历史任务撤回
-	 * @param orderId
-	 * @return
-	 */
-	@PostMapping(value = "undo")
-	public Object historyTaskUndo(String orderId) {
-		SysUser user = SysUserFeignService.queryUserInfo();
-		snakerEngine.order().withdraw(orderId, user.getUsername());
-		return succeed();
-	}
 }

+ 3 - 1
mec-web/src/main/java/com/ym/mec/web/config/WebMvcConfig.java

@@ -61,7 +61,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
 			@Override
 			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
+				}
 			}
 		});
 		// 日期和时间格式化

+ 3 - 3
mec-web/src/main/java/com/ym/mec/web/controller/education/EmployeeController.java

@@ -30,7 +30,7 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "根据部门获取下面的员工")
     @GetMapping("/queryEmployByOrganId")
-    public Object queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException {
+    public Object queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
         return succeed(employeeService.queryEmployByOrganId(queryInfo));
     }
 
@@ -43,7 +43,7 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "新增员工")
     @PostMapping("/add")
-    public Object add(Employee employee) {
+    public Object add(@RequestBody Employee employee) {
         try {
             employeeService.add(employee);
         } catch (Exception e) {
@@ -55,7 +55,7 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "修改员工")
     @PostMapping("/update")
-    public Object update(Employee employee) {
+    public Object update(@RequestBody Employee employee) {
         employee.setUpdateTime(new Date());
         employeeService.updateEmployee(employee);
         return succeed();

+ 9 - 7
mec-workflow/src/main/java/com/ym/mec/workfow/config/WebMvcConfig.java

@@ -58,12 +58,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -101,7 +95,15 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				try {
 					return format.parse(date);
 				} catch (ParseException e) {
-					throw new RuntimeException(e);
+					return null;
+				}
+			}
+		});
+		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
+			@Override
+			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
+				if (o instanceof String) {
+					jsonGenerator.writeString(StringUtils.EMPTY);
 				}
 			}
 		});

+ 8 - 3
mec-workflow/src/main/java/com/ym/mec/workfow/controller/web/LeaveController.java

@@ -53,19 +53,24 @@ public class LeaveController extends BaseController {
 	}
 
 	@PostMapping(value = "approve")
-	public Object approve(String taskId, boolean isAgree) {
+	public Object approve(String taskId, boolean isAgree, String remark) {
 		SysUser user = SysUserFeignService.queryUserInfo();
 
 		System.out.println(user.getUsername() + "审批***************");
 
+		Map<String, Object> params = new HashMap<String, Object>();
+
+		params.put("status", isAgree);
+		params.put("remark", remark);
+
 		List<Task> tasks = null;
 
 		// 审批同意
 		if (isAgree) {
-			tasks = snakerEngine.executeTask(taskId, user.getUsername());
+			tasks = snakerEngine.executeTask(taskId, user.getUsername(), params);
 		} else {
 			// 审批驳回
-			tasks = snakerEngine.executeAndJumpTask(taskId, user.getUsername(), null, null);
+			tasks = snakerEngine.executeAndJumpTask(taskId, user.getUsername(), params, null);
 		}
 		if (tasks.size() == 0) {
 			System.out.println("**********流程已结束*********");

+ 7 - 0
workflowy/src/main/java/org/snaker/engine/IOrderService.java

@@ -68,6 +68,13 @@ public interface IOrderService {
 	void complete(String orderId);
 
 	/**
+	 * 流程实例正常完成
+	 * @param orderId 流程实例id
+	 * @param args 变量数据
+	 */
+	void complete(String orderId, Map<String, Object> args);
+
+	/**
 	 * 保存流程实例
 	 * @param order 流程实例对象
 	 */

+ 8 - 1
workflowy/src/main/java/org/snaker/engine/core/OrderService.java

@@ -165,8 +165,15 @@ public class OrderService extends AccessService implements IOrderService {
 	 */
 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 	public void complete(String orderId) {
+		complete(orderId, null);
+	}
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public void complete(String orderId, Map<String, Object> args) {
 		Order order = access().getOrder(orderId);
 		HistoryOrder history = access().getHistOrder(orderId);
+		history.setVariable(JsonHelper.toJson(args));
 		history.setOrderState(STATE_FINISH);
 		history.setEndTime(DateHelper.getTime());
 		
@@ -177,7 +184,7 @@ public class OrderService extends AccessService implements IOrderService {
             completion.complete(history);
         }
 	}
-	
+
 	/**
 	 * 强制中止流程实例
 	 * @see org.snaker.engine.core.OrderService#terminate(String, String)

+ 1 - 1
workflowy/src/main/java/org/snaker/engine/handlers/impl/EndProcessHandler.java

@@ -48,7 +48,7 @@ public class EndProcessHandler implements IHandler {
 		/**
 		 * 结束当前流程实例
 		 */
-		engine.order().complete(order.getId());
+		engine.order().complete(order.getId(), execution.getArgs());
 		
 		/**
 		 * 如果存在父流程,则重新构造Execution执行对象,交给父流程的SubProcessModel模型execute