Browse Source

add 乐团巡查任务事项管理

周箭河 4 years ago
parent
commit
24001d65e1

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

@@ -2,10 +2,12 @@ package com.ym.mec.biz.dal.dao;
 
 
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.StudentVisitDto;
 import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.dto.TeacherVisitDto;
 import com.ym.mec.biz.dal.entity.StudentVisit;
 import com.ym.mec.biz.dal.entity.StudentVisit;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -52,4 +54,14 @@ public interface StudentVisitDao extends BaseDAO<Integer, StudentVisit> {
      * @return
      * @return
      */
      */
     List<Integer> getMusicGroupVisitStudent(@Param("musicGroupId") String musicGroupId, @Param("studentIds") List<Integer> studentIds);
     List<Integer> getMusicGroupVisitStudent(@Param("musicGroupId") String musicGroupId, @Param("studentIds") List<Integer> studentIds);
+
+    /**
+     * 获取老师时间段的回访次数
+     *
+     * @param teacherIds
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<TeacherVisitDto> getTeacherVisitCount(@Param("teacherIds") List<Integer> teacherIds, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }
 }

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherVisitDto.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.dto;
+
+/**
+ * 老师访问数
+ */
+public class TeacherVisitDto {
+    private Integer teacherId;
+
+    private String month;
+
+    private Integer num;
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+}

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/InspectionItem.java

@@ -79,6 +79,15 @@ public class InspectionItem {
     @ApiModelProperty(value = "修改时间")
     @ApiModelProperty(value = "修改时间")
     private Date updateTime;
     private Date updateTime;
 
 
+    @ApiModelProperty(value = "月份")
+    private Date month;
+
+    @ApiModelProperty(value = "分部名称")
+    private String organName;
+
+    @ApiModelProperty(value = "主管名字")
+    private String userName;
+
     public Long getId() {
     public Long getId() {
         return id;
         return id;
     }
     }
@@ -174,4 +183,28 @@ public class InspectionItem {
     public void setUpdateTime(Date updateTime) {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
         this.updateTime = updateTime;
     }
     }
+
+    public Date getMonth() {
+        return month;
+    }
+
+    public void setMonth(Date month) {
+        this.month = month;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
 }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/InspectionItemService.java

@@ -1,10 +1,21 @@
 package com.ym.mec.biz.service;
 package com.ym.mec.biz.service;
 
 
 import com.ym.mec.biz.dal.entity.InspectionItem;
 import com.ym.mec.biz.dal.entity.InspectionItem;
+import com.ym.mec.biz.dal.page.InspectionQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.common.service.BaseService;
 
 
+import java.util.List;
+
 public interface InspectionItemService extends BaseService<Long, InspectionItem> {
 public interface InspectionItemService extends BaseService<Long, InspectionItem> {
 
 
+    /**
+     * 获取任务事务项列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<InspectionItem> getPageList(InspectionQueryInfo queryInfo);
+
 }
 }
 
 
 
 

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/InspectionItemServiceImpl.java

@@ -1,24 +1,68 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
 import com.ym.mec.biz.dal.dao.InspectionItemDao;
 import com.ym.mec.biz.dal.dao.InspectionItemDao;
+import com.ym.mec.biz.dal.dao.StudentVisitDao;
+import com.ym.mec.biz.dal.dto.TeacherVisitDto;
+import com.ym.mec.biz.dal.enums.InspectionItemEnum;
+import com.ym.mec.biz.dal.page.InspectionQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import com.ym.mec.biz.dal.entity.InspectionItem;
 import com.ym.mec.biz.dal.entity.InspectionItem;
 import com.ym.mec.biz.service.InspectionItemService;
 import com.ym.mec.biz.service.InspectionItemService;
 
 
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
 @Service
 @Service
 public class InspectionItemServiceImpl extends BaseServiceImpl<Long, InspectionItem> implements InspectionItemService {
 public class InspectionItemServiceImpl extends BaseServiceImpl<Long, InspectionItem> implements InspectionItemService {
 
 
     @Autowired
     @Autowired
     private InspectionItemDao inspectionItemDao;
     private InspectionItemDao inspectionItemDao;
+    @Autowired
+    private StudentVisitDao studentVisitDao;
 
 
     @Override
     @Override
     public BaseDAO<Long, InspectionItem> getDAO() {
     public BaseDAO<Long, InspectionItem> getDAO() {
         return inspectionItemDao;
         return inspectionItemDao;
     }
     }
 
 
+    @Override
+    public PageInfo<InspectionItem> getPageList(InspectionQueryInfo queryInfo) {
+        if (queryInfo.getMonth() != null) {
+            queryInfo.setStartTime(DateUtil.getFirstDayOfMonth(queryInfo.getMonth()));
+            queryInfo.setEndTime(DateUtil.getLastTimeWithDay(DateUtil.getLastDayOfMonth(queryInfo.getMonth())));
+        }
+        PageInfo<InspectionItem> pageInfo = this.queryPage(queryInfo);
+        if (pageInfo.getTotal() <= 0) {
+            return pageInfo;
+        }
+        List<InspectionItem> rows = pageInfo.getRows();
+        List<Integer> teacherIds = rows.stream().filter(e -> e.getItem().equals(InspectionItemEnum.VISIT)).map(InspectionItem::getUserId).collect(Collectors.toList());
+        if (teacherIds.size() > 0) {
+            Date startTime = rows.stream().map(InspectionItem::getMonth).min(Date::compareTo).get();
+            Date EndTime = rows.stream().map(InspectionItem::getMonth).max(Date::compareTo).get();
+            startTime = DateUtil.getFirstDayOfMonth(startTime);
+            EndTime = DateUtil.getLastTimeWithDay(DateUtil.getLastDayOfMonth(EndTime));
+            List<TeacherVisitDto> teacherVisitCounts = studentVisitDao.getTeacherVisitCount(teacherIds, startTime, EndTime);
+            for (InspectionItem row : rows) {
+                if (row.getItem().equals(InspectionItemEnum.INSPECT)) continue;
+                for (TeacherVisitDto teacherVisitCount : teacherVisitCounts) {
+                    if (teacherVisitCount.getTeacherId().equals(row.getUserId()) &&
+                            DateUtil.dateToString(row.getMonth(), "yyyy-MM").equals(teacherVisitCount.getMonth())
+                    ) {
+                        row.setSubmittedTimes(teacherVisitCount.getNum());
+                    }
+                }
+            }
+        }
+        return pageInfo;
+    }
 }
 }
 
 
 
 

+ 47 - 3
mec-biz/src/main/resources/config/mybatis/InspectionItemMapper.xml

@@ -16,6 +16,9 @@
         <result column="operation_" property="operation"/>
         <result column="operation_" property="operation"/>
         <result column="create_time_" property="createTime"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="update_time_" property="updateTime"/>
+        <result column="month" property="month"/>
+        <result column="organName" property="organName"/>
+        <result column="userName" property="userName"/>
     </resultMap>
     </resultMap>
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
         <!--@mbg.generated-->
@@ -39,7 +42,8 @@
         <!--@mbg.generated-->
         <!--@mbg.generated-->
         insert into inspection_item (inspection_id_, organ_id_, user_id_, item_, times_, planned_times_,
         insert into inspection_item (inspection_id_, organ_id_, user_id_, item_, times_, planned_times_,
         submitted_times, memo_, operation_, create_time_, update_time_)
         submitted_times, memo_, operation_, create_time_, update_time_)
-        values (#{inspectionId}, #{organId}, #{userId}, #{item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{times}, #{plannedTimes},
+        values (#{inspectionId}, #{organId}, #{userId}, #{item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{times}, #{plannedTimes},
         #{submittedTimes}, #{memo}, #{operation}, #{createTime}, #{updateTime})
         #{submittedTimes}, #{memo}, #{operation}, #{createTime}, #{updateTime})
     </insert>
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.InspectionItem">
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.InspectionItem">
@@ -99,7 +103,8 @@
         VALUE
         VALUE
         <foreach collection="inspectionItems" item="inspectionItem" separator=",">
         <foreach collection="inspectionItems" item="inspectionItem" separator=",">
             (#{inspectionItem.inspectionId}, #{inspectionItem.organId}, #{inspectionItem.userId},
             (#{inspectionItem.inspectionId}, #{inspectionItem.organId}, #{inspectionItem.userId},
-            #{inspectionItem.item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{inspectionItem.times}, #{inspectionItem.operation},
+            #{inspectionItem.item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{inspectionItem.times},
+            #{inspectionItem.operation},
             #{inspectionItem.createTime}, #{inspectionItem.updateTime})
             #{inspectionItem.createTime}, #{inspectionItem.updateTime})
         </foreach>
         </foreach>
     </insert>
     </insert>
@@ -136,6 +141,45 @@
         </foreach>
         </foreach>
     </update>
     </update>
     <delete id="deleteByInspectionId">
     <delete id="deleteByInspectionId">
-        DELETE FROM inspection_item WHERE inspection_id_ = #{InspectionId}
+        DELETE FROM inspection_item
+        WHERE inspection_id_ = #{InspectionId}
     </delete>
     </delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="InspectionItem" parameterType="map">
+        SELECT ii.*,i.month_ month,o.name_ organName,su.real_name_ userName FROM inspection_item ii
+        LEFT JOIN inspection i ON i.id_ = ii.inspection_id_
+        LEFT JOIN organization o ON O.id_=ii.organ_id_
+        LEFT JOIN sys_user su ON su.id_ = ii.user_id_
+        <include refid="queryPageSql"/>
+        ORDER BY ii.id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*) FROM inspection_item ii
+        LEFT JOIN inspection i ON i.id_ = ii.inspection_id_
+        <include refid="queryPageSql"/>
+    </select>
+
+    <sql id="queryPageSql">
+        <where>
+            <if test="organId != null">
+                AND FIND_IN_SET(ii.organ_id_,#{organId})
+            </if>
+            <if test="userId != null">
+                AND ii.user_id_ = #{userId}
+            </if>
+            <if test="operation != null">
+                AND ii.operation_ = #{operation}
+            </if>
+            <if test="startTime != null">
+                AND ii.month_ >= #{startTime}
+            </if>
+            <if test="endTime != null">
+                <![CDATA[AND ii.month_ <= #{endTime}]]>
+            </if>
+        </where>
+    </sql>
 </mapper>
 </mapper>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/InspectionMapper.xml

@@ -72,7 +72,7 @@
     <!-- 分页查询 -->
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="Inspection" parameterType="map">
     <select id="queryPage" resultMap="Inspection" parameterType="map">
         SELECT i.*,o.name_ organName,su.real_name_ userName FROM inspection i
         SELECT i.*,o.name_ organName,su.real_name_ userName FROM inspection i
-        LEFT JOIN organization o ON O.id_=I.organ_id_
+        LEFT JOIN organization o ON O.id_=i.organ_id_
         LEFT JOIN sys_user su ON su.id_ = i.user_id_
         LEFT JOIN sys_user su ON su.id_ = i.user_id_
         <include refid="queryPageSql"/>
         <include refid="queryPageSql"/>
         ORDER BY i.id_
         ORDER BY i.id_

+ 12 - 0
mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml

@@ -179,4 +179,16 @@
             #{studentId}
             #{studentId}
         </foreach>
         </foreach>
     </select>
     </select>
+    <select id="getTeacherVisitCount" resultType="com.ym.mec.biz.dal.dto.TeacherVisitDto">
+        SELECT teacher_id_ teacherId,date_format(visit_time_, '%Y-%m') month, COUNT(*) num
+        FROM student_visit
+        WHERE teacher_id_ IN
+        <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
+            #{teacherId}
+        </foreach>
+        AND visit_time_ >= #{startTime}
+        <![CDATA[AND visit_time_ <= #{endTime}
+        ]]>
+        GROUP BY teacher_id_,date_format(visit_time_, '%Y-%m')
+    </select>
 </mapper>
 </mapper>

+ 72 - 0
mec-web/src/main/java/com/ym/mec/web/controller/InspectionItemController.java

@@ -0,0 +1,72 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.InspectionItem;
+import com.ym.mec.biz.dal.page.InspectionQueryInfo;
+import com.ym.mec.biz.service.InspectionItemService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@Api(tags = "巡查任务事项")
+@RequestMapping("inspectionItem")
+@RestController
+public class InspectionItemController extends BaseController {
+    @Autowired
+    private InspectionItemService inspectionItemService;
+    @Autowired
+    private EmployeeDao employeeDao;
+    @Resource
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "修改巡查任务事项")
+    @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('inspectionItem/update')")
+    public HttpResponseResult<InspectionItem> update(InspectionItem inspectionItem) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        inspectionItem.setUpdateTime(new Date());
+        inspectionItemService.update(inspectionItem);
+        return succeed(inspectionItem);
+    }
+
+    @ApiOperation(value = "巡查任务事项列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('inspectionItem/queryPage')")
+    public HttpResponseResult<PageInfo<InspectionItem>> queryPage(InspectionQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            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(inspectionItemService.getPageList(queryInfo));
+    }
+}