Browse Source

Merge remote-tracking branch 'origin/master'

周箭河 4 năm trước cách đây
mục cha
commit
6dce04d599

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -10,6 +10,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.poi.ss.formula.functions.Index;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData> {
@@ -297,4 +298,6 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
     int countStudentLeaveCourseList(Map<String, Object> params);
 
     List<StudentLeaveCourseDto> queryStudentLeaveCourseList(Map<String, Object> params);
+
+    List<Map<Integer, BigDecimal>> getStudentErrorLeaveNumMap(Map<String, Object> params);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/School.java

@@ -16,6 +16,8 @@ public class School {
 	
 	private Integer userId;
 
+	private String realName;
+
 	/**  */
 	@ApiModelProperty(value = "学校名称", required = false)
 	private String name;
@@ -62,6 +64,14 @@ public class School {
 	@ApiModelProperty(value = "备注", required = false)
 	private String remark;
 
+	public String getRealName() {
+		return realName;
+	}
+
+	public void setRealName(String realName) {
+		this.realName = realName;
+	}
+
 	public String getOrganName() {
 		return organName;
 	}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SchoolQueryInfo.java

@@ -10,6 +10,17 @@ public class SchoolQueryInfo extends QueryInfo {
     
     private String organId;
 
+    //是否公共
+    private Integer publicFlag;
+
+    public Integer getPublicFlag() {
+        return publicFlag;
+    }
+
+    public void setPublicFlag(Integer publicFlag) {
+        this.publicFlag = publicFlag;
+    }
+
     public Integer getCooperationOrganId() {
         return cooperationOrganId;
     }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -875,8 +875,13 @@ public class StudentManageServiceImpl implements StudentManageService {
         int count = indexBaseMonthDataDao.countStudentErrorLeave1(params);
         List<StudentErrorLeaveDto> dataList = new ArrayList<>();
         if (count > 0) {
+            //获取近两个月异常请假次数
+            Map<Integer,BigDecimal> leaveNumMap = MapUtil.convertIntegerMap(indexBaseMonthDataDao.getStudentErrorLeaveNumMap(params));
             pageInfo.setTotal(count);
             dataList = indexBaseMonthDataDao.queryStudentErrorLeave(params);
+            for (StudentErrorLeaveDto studentErrorLeaveDto : dataList) {
+                studentErrorLeaveDto.setTotalNum(leaveNumMap.get(studentErrorLeaveDto.getUserId()).intValue());
+            }
         }
         pageInfo.setRows(dataList);
         return pageInfo;

+ 27 - 5
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -1412,7 +1412,7 @@
 		SELECT sa.user_id_ FROM student_attendance sa
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
-		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{totalMonth} AND sa.status_ = 'LEAVE'
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{currentMonth} AND sa.status_ = 'LEAVE'
 		<if test="organId != null">
 			AND FIND_IN_SET(cs.organ_id_,#{organId})
 		</if>
@@ -1438,14 +1438,14 @@
 		<result property="organName" column="organ_name_"/>
 	</resultMap>
 	<select id="queryStudentErrorLeave" resultMap="StudentErrorLeaveDto">
-		SELECT organ_id_,organ_name_,user_id_,username_,phone_,SUM(total_num_) total_num_,current_num_,class_date_
-		FROM (SELECT cs.organ_id_,o.name_ organ_name_,sa.user_id_,su.username_,su.phone_,COUNT(sa.id_) total_num_,
-		COUNT(CASE WHEN DATE_FORMAT(cs.class_date_,'%Y-%m') = #{currentMonth} THEN 1 ELSE NULL END) current_num_,cs.class_date_
+		SELECT organ_id_,organ_name_,user_id_,username_,phone_,current_num_,class_date_
+		FROM (SELECT cs.organ_id_,o.name_ organ_name_,sa.user_id_,su.username_,su.phone_,
+		COUNT(sa.id_) current_num_,cs.class_date_
 		FROM student_attendance sa
 		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
 		LEFT JOIN organization o ON o.id_ = cs.organ_id_
 		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
-		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{totalMonth} AND sa.status_ = 'LEAVE'
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{currentMonth} AND sa.status_ = 'LEAVE'
 		<if test="organId != null">
 			AND FIND_IN_SET(cs.organ_id_,#{organId})
 		</if>
@@ -1507,4 +1507,26 @@
 		ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
 		<include refid="global.limit"/>
 	</select>
+	<select id="getStudentErrorLeaveNumMap" resultType="java.util.Map">
+		SELECT user_id_ 'key',SUM(total_num_) 'value'
+		FROM (SELECT sa.user_id_,COUNT(sa.id_) total_num_
+		FROM student_attendance sa
+		LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
+		LEFT JOIN sys_user su ON su.id_ = sa.user_id_
+		WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{totalMonth} AND sa.status_ = 'LEAVE'
+		<if test="organId != null">
+			AND FIND_IN_SET(cs.organ_id_,#{organId})
+		</if>
+		<if test="classGroupIds != null and classGroupIds.size() > 0">
+			AND cs.class_group_id_ IN
+			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+				#{classGroupId}
+			</foreach>
+		</if>
+		<if test="search != null and search != ''">
+			AND (sa.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+		</if>
+		GROUP BY sa.user_id_,DATE_FORMAT(cs.class_date_,'%Y-%m') HAVING COUNT(sa.id_) > 1 AND COUNT(sa.id_) > SUM(sa.leave_visit_flag_) ORDER BY cs.class_date_ DESC)c
+		GROUP BY c.user_id_
+	</select>
 </mapper>

+ 16 - 5
mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml

@@ -9,6 +9,7 @@
     <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
         <result column="id_" property="id"/>
         <result column="user_id_" property="userId"/>
+        <result column="real_name_" property="realName"/>
         <result column="name_" property="name"/>
         <result column="organ_id_" property="organId"/>
         <result column="address_" property="address"/>
@@ -92,17 +93,27 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="School" parameterType="map">
-        SELECT * FROM school where del_flag_ != 1
+        SELECT s.*,su.real_name_ FROM school s
+        LEFT JOIN sys_user su ON su.id_ = s.user_id_
+        WHERE s.del_flag_ != 1
         <if test="cooperationOrganId != null">
-            AND cooperation_organ_id_ = #{cooperationOrganId}
+            AND s.cooperation_organ_id_ = #{cooperationOrganId}
         </if>
         <if test="organId != null">
-            AND FIND_IN_SET(organ_id_,#{organId})
+            AND FIND_IN_SET(s.organ_id_,#{organId})
+        </if>
+        <if test="publicFlag != null">
+            <if test="publicFlag == 1">
+                AND s.user_id_ IS NULL
+            </if>
+            <if test="publicFlag == 0">
+                AND s.user_id_ IS NOT NULL
+            </if>
         </if>
         <if test="search != null">
-            AND (name_ LIKE CONCAT('%',#{search},'%') OR id_ LIKE CONCAT('%',#{search},'%'))
+            AND (s.name_ LIKE CONCAT('%',#{search},'%') OR s.id_ LIKE CONCAT('%',#{search},'%'))
         </if>
-        ORDER BY id_
+        ORDER BY s.id_
         <include refid="global.limit"/>
     </select>
 

+ 11 - 11
mec-web/src/main/java/com/ym/mec/web/controller/SchoolController.java

@@ -79,17 +79,17 @@ public class SchoolController extends BaseController {
 		if (sysUser == null) {
 			return failed("用户信息获取失败");
 		}
-			Employee employee = employeeDao.get(sysUser.getId());
-			if (StringUtils.isEmpty(queryInfo.getOrganId())) {
-				queryInfo.setOrganId(employee.getOrganIdList());
-			}else if(StringUtils.isEmpty(employee.getOrganIdList())){
-				return failed("用户所在分部异常");
-			}else {
-				List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-				if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
-					return failed("非法请求");
-				}
-			}
+        Employee employee = employeeDao.get(sysUser.getId());
+        if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+            return failed("用户所在分部异常");
+        }else {
+            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+            if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                return failed("非法请求");
+            }
+        }
         return succeed(schoolService.queryPageDetail(queryInfo));
     }