Forráskód Böngészése

add 乐团巡查任务管理

周箭河 4 éve
szülő
commit
3ed3ca1c63

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/InspectionDao.java

@@ -2,7 +2,14 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.Inspection;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 public interface InspectionDao extends BaseDAO<Long, Inspection> {
-
+    /**
+     * 获取巡查任务详情
+     *
+     * @param id
+     * @return
+     */
+    Inspection getInfo(@Param("id") Long id);
 }

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/InspectionItemDao.java

@@ -15,4 +15,45 @@ public interface InspectionItemDao extends BaseDAO<Long, InspectionItem> {
      * @return
      */
     List<InspectionItem> getItemCountAndTimes(@Param("inspectionIds") List<Long> inspectionIds);
+
+    /**
+     * 批量插入巡查任务表
+     *
+     * @param inspectionItems
+     * @return
+     */
+    int batchInsert(@Param("inspectionItems") List<InspectionItem> inspectionItems);
+
+
+    /**
+     * 获取巡查任务的任务事项
+     *
+     * @param inspectionId
+     * @return
+     */
+    List<InspectionItem> getItemByInspectionId(@Param("inspectionId") Long inspectionId);
+
+    /**
+     * 根据id删除任务事项
+     *
+     * @param ids
+     * @return
+     */
+    int deleteByIds(@Param("ids") List<Long> ids);
+
+    /**
+     * 批量更新巡查任务事项
+     *
+     * @param inspectionItems
+     * @return
+     */
+    int batchUpdate(@Param("inspectionItems") List<InspectionItem> inspectionItems);
+
+    /**
+     * 根据任务项删除任务事项
+     *
+     * @param InspectionId
+     * @return
+     */
+    int deleteByInspectionId(@Param("InspectionId") Long InspectionId);
 }

+ 23 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Inspection.java

@@ -2,7 +2,13 @@ package com.ym.mec.biz.dal.entity;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.PastOrPresent;
+import javax.validation.constraints.Positive;
 import java.util.Date;
+import java.util.List;
 
 @ApiModel(value = "com-ym-mec-biz-dal-entity-Inspection")
 public class Inspection {
@@ -16,18 +22,21 @@ public class Inspection {
      * 分部id
      */
     @ApiModelProperty(value = "分部id")
+    @Positive(message = "老师id必须大于0")
     private Integer organId;
 
     /**
      * 主管userId
      */
-    @ApiModelProperty(value = "主管userId")
+    @ApiModelProperty(value = "主管userId",required = true)
+    @Positive(message = "乐团主管必选")
     private Integer userId;
 
     /**
      * 月份
      */
-    @ApiModelProperty(value = "月份")
+    @ApiModelProperty(value = "月份",required = true)
+    @NotNull(message = "工作周期不能为空")
     private Date month;
 
     /**
@@ -66,6 +75,10 @@ public class Inspection {
     @ApiModelProperty(value = "任务总次数")
     private Integer times;
 
+    @ApiModelProperty(value = "巡查事项列表")
+    @NotNull(message = "巡查事务项不能为空")
+    private List<InspectionItem> inspectionItems;
+
     public Long getId() {
         return id;
     }
@@ -161,4 +174,12 @@ public class Inspection {
     public void setTimes(Integer times) {
         this.times = times;
     }
+
+    public List<InspectionItem> getInspectionItems() {
+        return inspectionItems;
+    }
+
+    public void setInspectionItems(List<InspectionItem> inspectionItems) {
+        this.inspectionItems = inspectionItems;
+    }
 }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/InspectionItem.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.InspectionItemEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.util.Date;
@@ -34,7 +35,7 @@ public class InspectionItem {
      * 任务项
      */
     @ApiModelProperty(value = "任务项")
-    private String item;
+    private InspectionItemEnum item;
 
     /**
      * 任务次数
@@ -110,11 +111,11 @@ public class InspectionItem {
         this.userId = userId;
     }
 
-    public String getItem() {
+    public InspectionItemEnum getItem() {
         return item;
     }
 
-    public void setItem(String item) {
+    public void setItem(InspectionItemEnum item) {
         this.item = item;
     }
 

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/InspectionItemEnum.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum InspectionItemEnum implements BaseEnum<String, InspectionItemEnum> {
+	INSPECT("INSPECT", "下校巡查"),
+	VISIT("VISIT", "学员回访");
+
+	private String code;
+
+	private String desc;
+
+	private InspectionItemEnum(String code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	@Override
+	public String getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+
+}

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/InspectionService.java

@@ -7,6 +7,8 @@ import com.ym.mec.biz.dal.page.SchoolQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+
 public interface InspectionService extends BaseService<Long, Inspection> {
 
     /**
@@ -15,6 +17,34 @@ public interface InspectionService extends BaseService<Long, Inspection> {
      * @return
      */
     PageInfo<Inspection> getPageList(InspectionQueryInfo queryInfo);
+
+
+    /**
+     * 添加巡查任务
+     * @param inspections
+     * @return
+     */
+    List<Inspection> add(List<Inspection> inspections,Integer operationUserId);
+
+    /**
+     * 获取巡查任务详情
+     * @param id
+     * @return
+     */
+    Inspection getInfo(Long id);
+
+    /**
+     * 修改巡查任务
+     * @return
+     */
+    Inspection updateInspection(Inspection inspection,Integer operationUserId);
+
+    /**
+     * 删除巡查任务
+     * @param id
+     * @return
+     */
+    Boolean delInspections(Long id);
 }
 
 

+ 107 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/InspectionServiceImpl.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dao.InspectionItemDao;
 import com.ym.mec.biz.dal.entity.InspectionItem;
 import com.ym.mec.biz.dal.page.InspectionQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.date.DateUtil;
@@ -12,9 +13,13 @@ import org.springframework.stereotype.Service;
 import com.ym.mec.biz.dal.entity.Inspection;
 import com.ym.mec.biz.dal.dao.InspectionDao;
 import com.ym.mec.biz.service.InspectionService;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 public class InspectionServiceImpl extends BaseServiceImpl<Long, Inspection> implements InspectionService {
@@ -50,6 +55,108 @@ public class InspectionServiceImpl extends BaseServiceImpl<Long, Inspection> imp
         }
         return pageInfo;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<Inspection> add(List<Inspection> inspections, Integer operationUserId) {
+        Date nowDate = new Date();
+        for (Inspection inspection : inspections) {
+            inspection.setOperation(operationUserId);
+            inspection.setCreateTime(nowDate);
+            inspection.setUpdateTime(nowDate);
+            inspectionDao.insert(inspection);
+            for (InspectionItem inspectionItem : inspection.getInspectionItems()) {
+                inspectionItem.setInspectionId(inspection.getId());
+                inspectionItem.setOrganId(inspection.getOrganId());
+                inspectionItem.setUserId(inspection.getUserId());
+                inspectionItem.setOperation(operationUserId);
+                inspectionItem.setCreateTime(nowDate);
+                inspectionItem.setUpdateTime(nowDate);
+            }
+            inspectionItemDao.batchInsert(inspection.getInspectionItems());
+        }
+        return inspections;
+    }
+
+    @Override
+    public Inspection getInfo(Long id) {
+        return inspectionDao.getInfo(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Inspection updateInspection(Inspection inspection, Integer operationUserId) {
+        if (inspection.getInspectionItems() == null || inspection.getInspectionItems().size() <= 0) {
+            throw new BizException("任务事项不能为空");
+        }
+        Date nowDate = new Date();
+        Inspection oldInspection = inspectionDao.get(inspection.getId());
+        if (oldInspection == null) {
+            throw new BizException("巡查任务不存在,请核查");
+        }
+        oldInspection.setUpdateTime(nowDate);
+        inspectionDao.update(oldInspection);
+
+        List<InspectionItem> updateItems = inspection.getInspectionItems().stream().filter(e -> e.getId() != null).collect(Collectors.toList());
+        List<InspectionItem> addItems = inspection.getInspectionItems().stream().filter(e -> e.getId() == null).collect(Collectors.toList());
+
+        List<InspectionItem> delItems = new ArrayList<>();
+        List<InspectionItem> oldItems = inspectionItemDao.getItemByInspectionId(inspection.getId());
+        for (InspectionItem oldItem : oldItems) {
+            boolean isUpdate = false;
+            for (InspectionItem updateItem : updateItems) {
+                if (!oldItem.getId().equals(updateItem.getId())) continue;
+                isUpdate = true;
+            }
+            if (!isUpdate) {
+                if (oldItem.getPlannedTimes() > 0) {
+                    throw new BizException(oldItem.getItem() + "已有日程安排不能删除");
+                }
+                delItems.add(oldItem);
+            }
+        }
+        //增加新的
+        for (InspectionItem addItem : addItems) {
+            addItem.setInspectionId(oldInspection.getId());
+            addItem.setOrganId(oldInspection.getOrganId());
+            addItem.setUserId(oldInspection.getUserId());
+            addItem.setOperation(operationUserId);
+            addItem.setCreateTime(nowDate);
+            addItem.setUpdateTime(nowDate);
+        }
+        //插入新的
+        if (addItems.size() > 0) {
+            inspectionItemDao.batchInsert(addItems);
+        }
+        //删除
+        if (delItems.size() > 0) {
+            List<Long> itemIds = delItems.stream().map(InspectionItem::getId).collect(Collectors.toList());
+            inspectionItemDao.deleteByIds(itemIds);
+        }
+        //修改现有的
+        if (updateItems.size() > 0) {
+            for (InspectionItem updateItem : updateItems) {
+                updateItem.setUpdateTime(nowDate);
+                updateItem.setOperation(operationUserId);
+            }
+            inspectionItemDao.batchUpdate(updateItems);
+        }
+        return inspection;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delInspections(Long id) {
+        List<InspectionItem> items = inspectionItemDao.getItemByInspectionId(id);
+        for (InspectionItem item : items) {
+            if (item.getPlannedTimes() > 0) {
+                throw new BizException(item.getItem() + "已有日程安排不能删除");
+            }
+        }
+        inspectionDao.delete(id);
+        inspectionItemDao.deleteByInspectionId(id);
+        return true;
+    }
 }
 
 

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

@@ -8,7 +8,7 @@
         <result column="inspection_id_" property="inspectionId"/>
         <result column="organ_id_" property="organId"/>
         <result column="user_id_" property="userId"/>
-        <result column="item_" property="item"/>
+        <result column="item_" property="item" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="times_" property="times"/>
         <result column="planned_times_" property="plannedTimes"/>
         <result column="submitted_times" property="submittedTimes"/>
@@ -39,7 +39,7 @@
         <!--@mbg.generated-->
         insert into inspection_item (inspection_id_, organ_id_, user_id_, item_, times_, planned_times_,
         submitted_times, memo_, operation_, create_time_, update_time_)
-        values (#{inspectionId}, #{organId}, #{userId}, #{item}, #{times}, #{plannedTimes},
+        values (#{inspectionId}, #{organId}, #{userId}, #{item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{times}, #{plannedTimes},
         #{submittedTimes}, #{memo}, #{operation}, #{createTime}, #{updateTime})
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.InspectionItem">
@@ -56,7 +56,7 @@
                 user_id_ = #{userId},
             </if>
             <if test="item != null">
-                item_ = #{item},
+                item_ = #{item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
             <if test="times != null">
                 times_ = #{times},
@@ -91,4 +91,51 @@
         </foreach>
         GROUP BY inspection_id_
     </select>
+
+    <insert id="batchInsert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.InspectionItem"
+            useGeneratedKeys="true">
+        INSERT INTO inspection_item (inspection_id_, organ_id_, user_id_, item_, times_,operation_, create_time_,
+        update_time_)
+        VALUE
+        <foreach collection="inspectionItems" item="inspectionItem" separator=",">
+            (#{inspectionItem.inspectionId}, #{inspectionItem.organId}, #{inspectionItem.userId},
+            #{inspectionItem.item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{inspectionItem.times}, #{inspectionItem.operation},
+            #{inspectionItem.createTime}, #{inspectionItem.updateTime})
+        </foreach>
+    </insert>
+
+    <select id="getItemByInspectionId" resultMap="InspectionItem">
+        SELECT *
+        FROM inspection_item
+        WHERE inspection_id_ = #{inspectionId}
+    </select>
+
+    <delete id="deleteByIds">
+        DELETE FROM inspection_item WHERE id_ IN
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+
+    <!-- 批量更新任务次数 -->
+    <update id="batchUpdate">
+        <foreach collection="inspectionItems" item="inspectionItem" index="index" open="" close="" separator=";">
+            update inspection_item
+            <set>
+                <if test="inspectionItem.times != null">
+                    times_ = #{inspectionItem.times},
+                </if>
+                <if test="inspectionItem.operation != null">
+                    operation_ = #{inspectionItem.operation},
+                </if>
+                <if test="inspectionItem.updateTime != null">
+                    update_time_ = #{inspectionItem.updateTime}
+                </if>
+            </set>
+            where id_ = #{inspectionItem.id}
+        </foreach>
+    </update>
+    <delete id="deleteByInspectionId">
+        DELETE FROM inspection_item WHERE inspection_id_ = #{InspectionId}
+    </delete>
 </mapper>

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

@@ -12,6 +12,9 @@
         <result column="operation_" property="operation"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
+        <result column="organName" property="organName"/>
+        <result column="userName" property="userName"/>
+        <collection property="inspectionItems" ofType="com.ym.mec.biz.dal.entity.InspectionItem" resultMap="com.ym.mec.biz.dal.dao.InspectionItemDao.InspectionItem"/>
     </resultMap>
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
@@ -32,9 +35,9 @@
     <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.Inspection"
             useGeneratedKeys="true">
         <!--@mbg.generated-->
-        insert into inspection (organ_id_, user_id_, month_, memo_, operation_, create_time_, update_time_
+        insert into inspection (organ_id_, user_id_, month_, operation_, create_time_, update_time_
         )
-        values (#{organId}, #{userId}, #{month}, #{memo}, #{operation}, #{createTime}, #{updateTime}
+        values (#{organId}, #{userId}, #{month}, #{operation}, #{createTime}, #{updateTime}
         )
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.Inspection">
@@ -101,4 +104,11 @@
             </if>
         </where>
     </sql>
+    <select id="getInfo" resultMap="Inspection">
+        SELECT i.*,ii.*, o.name_ organName,su.real_name_ userName FROM inspection i
+        LEFT JOIN organization o ON o.id_ = i.organ_id_
+        LEFT JOIN sys_user su ON su.id_ = i.user_id_
+        LEFT JOIN inspection_item ii ON ii.inspection_id_ = i.id_
+        WHERE i.id_ = #{id}
+    </select>
 </mapper>

+ 34 - 6
mec-web/src/main/java/com/ym/mec/web/controller/InspectionController.java

@@ -15,9 +15,7 @@ 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.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.Arrays;
@@ -35,10 +33,32 @@ public class InspectionController extends BaseController {
     private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "添加巡查任务")
-    @GetMapping("/add")
+    @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('inspection/add')")
-    public HttpResponseResult<List<Inspection>> add(List<Inspection> inspections){
+    public HttpResponseResult<List<Inspection>> add(@RequestBody List<Inspection> inspections) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(inspectionService.add(inspections, sysUser.getId()));
+    }
+
+    @ApiOperation(value = "删除巡查任务")
+    @PostMapping("/delete")
+    @PreAuthorize("@pcs.hasPermissions('inspection/delete')")
+    public HttpResponseResult<Boolean> delete(Long id) {
+        return succeed(inspectionService.delInspections(id));
+    }
 
+    @ApiOperation(value = "修改巡查任务")
+    @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('inspection/update')")
+    public HttpResponseResult<Inspection> update(@RequestBody Inspection inspection) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(inspectionService.updateInspection(inspection, sysUser.getId()));
     }
 
     @ApiOperation(value = "巡查任务列表")
@@ -62,6 +82,14 @@ public class InspectionController extends BaseController {
                 }
             }
         }
-        return succeed(inspectionService.queryPage(queryInfo));
+        return succeed(inspectionService.getPageList(queryInfo));
     }
+
+    @ApiOperation(value = "查看巡查任务详情")
+    @GetMapping("/getInfo")
+    @PreAuthorize("@pcs.hasPermissions('inspection/getInfo')")
+    public HttpResponseResult<Inspection> getInfo(Long id) {
+        return succeed(inspectionService.getInfo(id));
+    }
+
 }