Commit 2d23a638 by zhiwj

项目排序

parent 4e38dfcb
......@@ -13,7 +13,6 @@ import java.util.List;
*/
public class ProjectDTO implements Serializable{
private static final long serialVersionUID = -6709186360782680347L;
public interface SaveValid{}
/**
......@@ -43,6 +42,17 @@ public class ProjectDTO implements Serializable{
private Integer itemUseCount;
private int seq;
public void setSeq(int seq) {
this.seq = seq;
}
public int getSeq() {
return seq;
}
public void setItemTotalCount(Integer itemTotalCount) {
this.itemTotalCount = itemTotalCount;
}
......
......@@ -68,6 +68,7 @@ public class ProjectItemDTO implements Serializable {
* 审批模板类型 0:普通审批项, 1:风险模式审批, 2:导出完整数据
*/
private Integer auditTemplateType;
private int seq;
public Integer getProjectItemId() {
return projectItemId;
......@@ -164,4 +165,12 @@ public class ProjectItemDTO implements Serializable {
public void setAuditTemplateType(Integer auditTemplateType) {
this.auditTemplateType = auditTemplateType;
}
public void setSeq(int seq) {
this.seq = seq;
}
public int getSeq() {
return seq;
}
}
......@@ -57,4 +57,26 @@ public interface ProjectApiService {
* @throws
*/
ServiceResponse<List<ProjectDTO>> listAllProject();
/**
* @Title: setProjectSort
* @Description:
* @author zhiwj
* @param projectId
* @param seq
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Void>
* @throws
*/
ServiceResponse<Void> setProjectSort(Integer projectId, Integer seq);
/**
* @Title: setProjectItemSort
* @Description:
* @author zhiwj
* @param projectItemId
* @param seq
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Void>
* @throws
*/
ServiceResponse<Void> setProjectItemSort(Integer projectItemId, Integer seq);
}
package com.gic.enterprise.dao.mapper;
import com.gic.enterprise.dto.ProjectItemDTO;
import com.gic.enterprise.entity.TabProject;
import com.gic.enterprise.entity.TabProjectItem;
import com.gic.enterprise.qo.ProjectItemQO;
import com.github.pagehelper.Page;
......@@ -65,4 +66,10 @@ public interface TabProjectItemMapper {
List<Map<String,Object>> getProjectItemCountByProjectIds(@Param("ids") List<Integer> projectIds, @Param("useStatus") Integer useStatus);
TabProjectItem getByProjectItemCode(@Param("projectItemCode") String projectItemCode);
List<TabProject> listTwoElementExceptId(@Param("start") int start, @Param("size") int size, @Param("projectItemId") Integer projectItemId);
Double getMinSort();
Double getMaxSort();
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.gic.enterprise.dao.mapper;
import com.gic.enterprise.dto.ProjectDTO;
import com.gic.enterprise.entity.TabProject;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -58,4 +59,10 @@ public interface TabProjectMapper {
TabProject getFirstProject(ProjectDTO projectDTO);
Page<TabProject> listProject(ProjectDTO projectDTO);
List<TabProject> listTwoElementExceptId(@Param("start") int start, @Param("size") int size, @Param("projectId") Integer projectId);
Double getMinSort();
Double getMaxSort();
}
\ No newline at end of file
......@@ -31,6 +31,11 @@ public class TabProject {
*/
private Date updateTime;
/**
* 排序
*/
private Double sort;
public Integer getProjectId() {
return projectId;
}
......@@ -70,4 +75,12 @@ public class TabProject {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Double getSort() {
return sort;
}
public void setSort(Double sort) {
this.sort = sort;
}
}
\ No newline at end of file
......@@ -71,6 +71,11 @@ public class TabProjectItem {
*/
private Integer auditTemplateType;
/**
*
*/
private Double sort;
public Integer getProjectItemId() {
return projectItemId;
}
......@@ -174,4 +179,12 @@ public class TabProjectItem {
public void setAuditTemplateType(Integer auditTemplateType) {
this.auditTemplateType = auditTemplateType;
}
public Double getSort() {
return sort;
}
public void setSort(Double sort) {
this.sort = sort;
}
}
\ No newline at end of file
......@@ -36,4 +36,6 @@ public interface ProjectItemService {
TabProjectItem getById(Integer projectItemId);
TabProjectItem getByProjectItemCode(String projectItemCode);
void setProjectItemSort(Integer projectItemId, Integer seq);
}
......@@ -28,4 +28,6 @@ public interface ProjectService {
List<TabProject> listAllProject();
TabProject getProjectByProjectItem(Integer projectItemId);
void setProjectSort(Integer projectId, Integer seq);
}
......@@ -4,11 +4,13 @@ import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GlobalInfo;
import com.gic.enterprise.dao.mapper.TabProjectItemMapper;
import com.gic.enterprise.dto.ProjectItemDTO;
import com.gic.enterprise.entity.TabProject;
import com.gic.enterprise.entity.TabProjectItem;
import com.gic.enterprise.qo.ProjectItemQO;
import com.gic.enterprise.service.ProjectItemService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -39,6 +41,8 @@ public class ProjectItemServiceImpl implements ProjectItemService {
TabProjectItem projectItem = EntityUtil.changeEntityByJSON(TabProjectItem.class, copy);
projectItem.setStatus(GlobalInfo.DATA_STATUS_NORMAL);
projectItem.setCreateTime(new Date());
Double sort = tabProjectItemMapper.getMinSort();
projectItem.setSort(sort == null ? 1d : sort - 1d);
tabProjectItemMapper.insertSelective(projectItem);
return projectItem.getProjectItemId();
}
......@@ -107,4 +111,52 @@ public class ProjectItemServiceImpl implements ProjectItemService {
public TabProjectItem getByProjectItemCode(String projectItemCode) {
return tabProjectItemMapper.getByProjectItemCode(projectItemCode);
}
@Override
public void setProjectItemSort(Integer projectItemId, Integer seq) {
if (seq <= 1) {
// 相当于置顶
sortTopping(projectItemId);
} else {
int start = seq - 2;
int size = 2;
List<TabProject> list = tabProjectItemMapper.listTwoElementExceptId(start, size, projectItemId);
if (CollectionUtils.isEmpty(list)) {
// 置底
sortBottom(projectItemId);
} else {
Double sort;
if (list.size() == 1) {
// 置底
sort = list.get(0).getSort() + 1d;
} else {
sort = (list.get(0).getSort() + list.get(1).getSort()) / 2d;
}
TabProjectItem project = new TabProjectItem();
project.setProjectItemId(projectItemId);
project.setSort(sort);
tabProjectItemMapper.updateByPrimaryKeySelective(project);
}
}
}
private void sortTopping(Integer projectItemId) {
Double sort = tabProjectItemMapper.getMinSort();
TabProjectItem projectItem = new TabProjectItem();
projectItem.setProjectItemId(projectItemId);
projectItem.setSort(sort - 1d);
tabProjectItemMapper.updateByPrimaryKeySelective(projectItem);
}
private void sortBottom(Integer projectItemId) {
Double sort = tabProjectItemMapper.getMaxSort();
if (sort != null) {
TabProjectItem projectItem = new TabProjectItem();
projectItem.setProjectItemId(projectItemId);
projectItem.setSort(sort + 1d);
tabProjectItemMapper.updateByPrimaryKeySelective(projectItem);
}
}
}
......@@ -9,6 +9,7 @@ import com.gic.enterprise.entity.TabProjectItem;
import com.gic.enterprise.service.ProjectService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -36,6 +37,10 @@ public class ProjectServiceImpl implements ProjectService {
tabProject.setProjectName(copy.getProjectName());
tabProject.setStatus(GlobalInfo.DATA_STATUS_NORMAL);
tabProject.setCreateTime(new Date());
Double sort = tabProjectMapper.getMinSort();
tabProject.setSort(sort == null ? 1d : sort - 1d);
tabProjectMapper.insertSelective(tabProject);
return tabProject.getProjectId();
}
......@@ -90,4 +95,52 @@ public class ProjectServiceImpl implements ProjectService {
TabProjectItem projectItem = tabProjectItemMapper.selectByPrimaryKey(projectItemId);
return tabProjectMapper.selectByPrimaryKey(projectItem.getProjectId());
}
@Override
public void setProjectSort(Integer projectId, Integer seq) {
if (seq <= 1) {
// 相当于置顶
sortTopping(projectId);
} else {
int start = seq - 2;
int size = 2;
List<TabProject> list = tabProjectMapper.listTwoElementExceptId(start, size, projectId);
if (CollectionUtils.isEmpty(list)) {
// 置底
sortBottom(projectId);
} else {
Double sort;
if (list.size() == 1) {
// 置底
sort = list.get(0).getSort() + 1d;
} else {
sort = (list.get(0).getSort() + list.get(1).getSort()) / 2d;
}
TabProject project = new TabProject();
project.setProjectId(projectId);
project.setSort(sort);
tabProjectMapper.updateByPrimaryKeySelective(project);
}
}
}
private void sortTopping(Integer projectId) {
Double sort = tabProjectMapper.getMinSort();
TabProject project = new TabProject();
project.setProjectId(projectId);
project.setSort(sort - 1d);
tabProjectMapper.updateByPrimaryKeySelective(project);
}
private void sortBottom(Integer projectId) {
Double sort = tabProjectMapper.getMaxSort();
if (sort != null) {
TabProject project = new TabProject();
project.setProjectId(projectId);
project.setSort(sort + 1d);
tabProjectMapper.updateByPrimaryKeySelective(project);
}
}
}
......@@ -79,6 +79,8 @@ public class ProjectApiServiceImpl implements ProjectApiService{
Map<Integer, Integer> totalCountMap = projectItemService.getProjectItemCountByProjectIds(projectIds, null);
Map<Integer, Integer> countUseMap = projectItemService.getProjectItemCountByProjectIds(projectIds, GlobalInfo.DATA_STATUS_NORMAL);
List<ProjectDTO> resultList = projectPage.getResult();
int index = (pageNum - 1) * pageSize + 1;
int i = 0;
for (ProjectDTO dto : resultList) {
Integer totalCount = totalCountMap.get(dto.getProjectId());
dto.setItemTotalCount(totalCount == null ? 0 : totalCount);
......@@ -90,6 +92,8 @@ public class ProjectApiServiceImpl implements ProjectApiService{
itemQO.setPageSize(3);
com.github.pagehelper.Page<TabProjectItem> itemList = projectItemService.listProjectItem(itemQO);
dto.setItemList(EntityUtil.changeEntityListNew(ProjectItemDTO.class, itemList));
dto.setSeq(index + i);
i++;
}
}
return ServiceResponse.success(projectPage);
......@@ -114,5 +118,16 @@ public class ProjectApiServiceImpl implements ProjectApiService{
return ServiceResponse.success(result);
}
@Override
public ServiceResponse<Void> setProjectSort(Integer projectId, Integer seq) {
this.projectService.setProjectSort(projectId, seq);
return ServiceResponse.success();
}
@Override
public ServiceResponse<Void> setProjectItemSort(Integer projectItemId, Integer seq) {
this.projectItemService.setProjectItemSort(projectItemId, seq);
return ServiceResponse.success();
}
}
......@@ -15,10 +15,13 @@ import com.gic.enterprise.service.AuditLogService;
import com.gic.enterprise.service.ProjectItemApiService;
import com.gic.enterprise.service.ProjectItemService;
import com.gic.enterprise.service.ProjectService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
*
* @Description:
......@@ -79,6 +82,12 @@ public class ProjectItemApiServiceImpl implements ProjectItemApiService {
public ServiceResponse<Page<ProjectItemDTO>> listProjectItem(ProjectItemQO projectItemQO) {
com.github.pagehelper.Page page = projectItemService.listProjectItem(projectItemQO);
Page<ProjectItemDTO> dtoPage = PageHelperUtils.changePageHelperToCurrentPage(page, ProjectItemDTO.class);
List<ProjectItemDTO> resultList = page.getResult();
if (CollectionUtils.isNotEmpty(resultList)) {
for (int i = 0; i < resultList.size(); i++) {
resultList.get(i).setSeq(1 + i);
}
}
return ServiceResponse.success(dtoPage);
}
......
......@@ -15,11 +15,12 @@
<result column="is_platform" jdbcType="INTEGER" property="isPlatform" />
<result column="audit_expire_duration" jdbcType="INTEGER" property="auditExpireDuration" />
<result column="audit_template_type" jdbcType="INTEGER" property="auditTemplateType" />
<result column="sort" jdbcType="DOUBLE" property="sort" />
</resultMap>
<sql id="Base_Column_List">
project_item_id, project_item_name, project_item_code, project_item_desc, project_id,
callback_url, use_status, status, create_time, update_time, is_platform, audit_expire_duration,
audit_template_type
audit_template_type, sort
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
......@@ -36,14 +37,17 @@
project_item_desc, project_id, callback_url,
use_status, status, create_time,
update_time, is_platform, audit_expire_duration,
audit_template_type)
audit_template_type, sort)
values (#{projectItemId,jdbcType=INTEGER}, #{projectItemName,jdbcType=VARCHAR}, #{projectItemCode,jdbcType=VARCHAR},
#{projectItemDesc,jdbcType=VARCHAR}, #{projectId,jdbcType=INTEGER}, #{callbackUrl,jdbcType=VARCHAR},
#{useStatus,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP}, #{isPlatform,jdbcType=INTEGER}, #{auditExpireDuration,jdbcType=INTEGER},
#{auditTemplateType,jdbcType=INTEGER})
#{auditTemplateType,jdbcType=INTEGER}, #{sort,jdbcType=DOUBLE})
</insert>
<insert id="insertSelective" parameterType="com.gic.enterprise.entity.TabProjectItem">
<selectKey keyProperty="projectItemId" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into tab_project_item
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectItemId != null">
......@@ -85,6 +89,9 @@
<if test="auditTemplateType != null">
audit_template_type,
</if>
<if test="sort != null">
sort,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectItemId != null">
......@@ -126,6 +133,9 @@
<if test="auditTemplateType != null">
#{auditTemplateType,jdbcType=INTEGER},
</if>
<if test="sort != null">
#{sort,jdbcType=DOUBLE},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.enterprise.entity.TabProjectItem">
......@@ -167,6 +177,9 @@
<if test="auditTemplateType != null">
audit_template_type = #{auditTemplateType,jdbcType=INTEGER},
</if>
<if test="sort != null">
sort = #{sort,jdbcType=DOUBLE},
</if>
</set>
where project_item_id = #{projectItemId,jdbcType=INTEGER}
</update>
......@@ -183,7 +196,8 @@
update_time = #{updateTime,jdbcType=TIMESTAMP},
is_platform = #{isPlatform,jdbcType=INTEGER},
audit_expire_duration = #{auditExpireDuration,jdbcType=INTEGER},
audit_template_type = #{auditTemplateType,jdbcType=INTEGER}
audit_template_type = #{auditTemplateType,jdbcType=INTEGER},
sort = #{sort,jdbcType=DOUBLE}
where project_item_id = #{projectItemId,jdbcType=INTEGER}
</update>
<select id="getFirstProjectItem" resultMap="BaseResultMap">
......@@ -250,4 +264,19 @@
</if>
limit 1
</select>
<select id="listTwoElementExceptId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_project_item
where status = 1
and project_item_id &lt;&gt; #{projectItemId}
order by sort
limit #{start}, #{size}
</select>
<select id="getMinSort" resultType="java.lang.Double">
select sort from tab_project_item where status = 1 order by sort limit 1
</select>
<select id="getMaxSort" resultType="java.lang.Double">
select sort from tab_project_item where status = 1 order by sort desc limit 1
</select>
</mapper>
\ No newline at end of file
......@@ -7,9 +7,10 @@
<result column="status" jdbcType="INTEGER" property="status" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="sort" jdbcType="DOUBLE" property="sort" />
</resultMap>
<sql id="Base_Column_List">
project_id, project_name, status, create_time, update_time
project_id, project_name, status, create_time, update_time, sort
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
......@@ -23,9 +24,11 @@
</delete>
<insert id="insert" parameterType="com.gic.enterprise.entity.TabProject">
insert into tab_project (project_id, project_name, status,
create_time, update_time)
create_time, update_time, sort
)
values (#{projectId,jdbcType=INTEGER}, #{projectName,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{sort,jdbcType=DOUBLE}
)
</insert>
<insert id="insertSelective" parameterType="com.gic.enterprise.entity.TabProject">
<selectKey keyProperty="projectId" order="AFTER" resultType="java.lang.Integer">
......@@ -48,6 +51,9 @@
<if test="updateTime != null">
update_time,
</if>
<if test="sort != null">
sort,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">
......@@ -65,6 +71,9 @@
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="sort != null">
#{sort,jdbcType=DOUBLE},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.enterprise.entity.TabProject">
......@@ -82,6 +91,9 @@
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="sort != null">
sort = #{sort,jdbcType=DOUBLE},
</if>
</set>
where project_id = #{projectId,jdbcType=INTEGER}
</update>
......@@ -90,7 +102,8 @@
set project_name = #{projectName,jdbcType=VARCHAR},
status = #{status,jdbcType=INTEGER},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
update_time = #{updateTime,jdbcType=TIMESTAMP},
sort = #{sort,jdbcType=DOUBLE}
where project_id = #{projectId,jdbcType=INTEGER}
</update>
<select id="getFirstProject" resultMap="BaseResultMap">
......@@ -114,6 +127,21 @@
<if test="projectName != null and projectName != '' ">
and project_name like concat('%', #{projectName}, '%')
</if>
order by create_time desc
order by sort
</select>
<select id="listTwoElementExceptId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_project
where status = 1
and project_id &lt;&gt; #{projectId}
order by sort
limit #{start}, #{size}
</select>
<select id="getMinSort" resultType="java.lang.Double">
select sort from tab_project where status = 1 order by sort limit 1
</select>
<select id="getMaxSort" resultType="java.lang.Double">
select sort from tab_project where status = 1 order by sort desc limit 1
</select>
</mapper>
\ No newline at end of file
......@@ -43,4 +43,10 @@ public class ProjectController {
ServiceResponse<Page<ProjectDTO>> serviceResponse = projectApiService.listProject(projectDTO, projectQO.getCurrentPage(), projectQO.getPageSize());
return ResultControllerUtils.commonResult(serviceResponse);
}
@RequestMapping("/set-project-seq")
public RestResponse setProjectSeq(Integer projectId, Integer seq) {
ServiceResponse<Void> serviceResponse = projectApiService.setProjectSort(projectId, seq);
return ResultControllerUtils.commonResult(serviceResponse);
}
}
......@@ -6,6 +6,7 @@ import com.gic.commons.util.EntityUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.dto.ProjectItemDTO;
import com.gic.enterprise.qo.ProjectItemQO;
import com.gic.enterprise.service.ProjectApiService;
import com.gic.enterprise.service.ProjectItemApiService;
import com.gic.enterprise.utils.ResultControllerUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,6 +24,8 @@ public class ProjectItemController {
@Autowired
private ProjectItemApiService projectItemApiService;
@Autowired
private ProjectApiService projectApiService;
@RequestMapping("/save-project-item")
public RestResponse saveProjectItem(ProjectItemQO projectItemQO) {
......@@ -43,4 +46,9 @@ public class ProjectItemController {
return ResultControllerUtils.commonResult(serviceResponse);
}
@RequestMapping("/set-project-item-seq")
public RestResponse setProjectSeq(Integer projectItemId, Integer seq) {
ServiceResponse<Void> serviceResponse = projectApiService.setProjectItemSort(projectItemId, seq);
return ResultControllerUtils.commonResult(serviceResponse);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment