Browse Source

议题标签修改/保存

master
zxc 5 years ago
parent
commit
7d334a268f
  1. 24
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueTagFormDTO.java
  2. 72
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueTagsFormDTO.java
  3. 28
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueTagsSaveFormDTO.java
  4. 21
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueProjectTagsResultDTO.java
  5. 15
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueTagsController.java
  6. 22
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java
  7. 34
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueTagsDao.java
  8. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java
  9. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueTagsService.java
  10. 69
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueTagsServiceImpl.java
  11. 33
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml
  12. 54
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueTagsDao.xml

24
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueTagFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/12/10 上午9:31
*/
@Data
public class IssueTagFormDTO implements Serializable {
private static final long serialVersionUID = -8678756265520573631L;
private String id;
private String tagName;
private String categoryId;
private String tagId;
}

72
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueTagsFormDTO.java

@ -0,0 +1,72 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/12/10 上午9:31
*/
@Data
public class IssueTagsFormDTO implements Serializable {
private static final long serialVersionUID = -8678756265520570931L;
/**
* 主键ID
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 议题所属网格id
*/
private String gridId;
/**
* 议题ID
*/
private String issueId;
/**
* 标签ID
*/
private String tagId;
/**
* 标签名称
*/
private String tagName;
/**
* 删除标识 0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 更新人
*/
private String updatedBy;
public IssueTagsFormDTO() {
this.delFlag = 0;
this.revision = 0;
this.createdBy = "APP_USER";
this.updatedBy = "APP_USER";
}
}

28
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueTagsSaveFormDTO.java

@ -0,0 +1,28 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/12/10 上午9:29
*/
@Data
public class IssueTagsSaveFormDTO implements Serializable {
private static final long serialVersionUID = 4122102633306198151L;
public interface IssueTagsSaveForm{}
@NotBlank(message = "议题ID不能为空",groups = {IssueTagsSaveForm.class})
private String issueId;
/**
* 标签集合 为空清除此议题标签
*/
private List<IssueTagFormDTO> tagList;
}

21
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueProjectTagsResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/12/10 下午2:13
*/
@Data
public class IssueProjectTagsResultDTO implements Serializable {
private static final long serialVersionUID = -5035269596436047038L;
private String tagId;
private String tagName;
private String categoryId;
}

15
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueTagsController.java

@ -29,6 +29,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IssueTagsDTO;
import com.epmet.dto.form.AddTagFormDTO;
import com.epmet.dto.form.IssueTagsSaveFormDTO;
import com.epmet.dto.result.AddTagResultDTO;
import com.epmet.excel.IssueTagsExcel;
import com.epmet.service.IssueTagsService;
@ -108,4 +109,18 @@ public class IssueTagsController {
return new Result<AddTagResultDTO>().ok(addTagResultDTO);
}
/**
* @Description 议题标签保存/修改
* @Param form
* @Param tokenDto
* @author zxc
* @date 2020/12/10 上午9:37
*/
@PostMapping("save")
public Result issueTagSave(@RequestBody IssueTagsSaveFormDTO form,@LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(form, IssueTagsSaveFormDTO.IssueTagsSaveForm.class);
issueTagsService.issueTagSave(form,tokenDto);
return new Result();
}
}

22
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java

@ -18,10 +18,11 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.IssueTagFormDTO;
import com.epmet.dto.result.IssueCategoryTagResultDTO;
import com.epmet.entity.IssueProjectTagDictEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.repository.query.Param;
import java.util.List;
@ -33,6 +34,25 @@ import java.util.List;
*/
@Mapper
public interface IssueProjectTagDictDao extends BaseDao<IssueProjectTagDictEntity> {
/**
* @Description 更新标签使用次数
* @Param tags
* @Param status 0:+11-1
* @author zxc
* @date 2020/12/10 上午10:29
*/
void updateTagsUseCount(@Param("tags") List<IssueTagFormDTO> tags,@Param("customerId")String customerId,@Param("status")String status);
/**
* @Description 查询标签ID
* @Param newTags
* @Param customerId
* @author zxc
* @date 2020/12/10 下午2:16
*/
List<IssueTagFormDTO> selectTagId(@Param("tags") List<IssueTagFormDTO> newTags, @Param("customerId")String customerId);
/**
* 获取客户默认分类标签
* @author zhaoqifeng

34
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueTagsDao.java

@ -20,6 +20,8 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IssueTagsDTO;
import com.epmet.dto.form.AddTagFormDTO;
import com.epmet.dto.form.IssueTagFormDTO;
import com.epmet.dto.form.IssueTagsFormDTO;
import com.epmet.dto.result.IssueCategoryTagResultDTO;
import com.epmet.entity.IssueTagsEntity;
import org.apache.ibatis.annotations.Mapper;
@ -58,4 +60,36 @@ public interface IssueTagsDao extends BaseDao<IssueTagsEntity> {
* @date 2020/12/9 下午3:40
*/
String selectTagNameCount(AddTagFormDTO form);
/**
* @Description 根据IssueId查询标签
* @Param issueId
* @author zxc
* @date 2020/12/10 上午10:05
*/
List<IssueTagFormDTO> selectTagsByIssueId(@Param("issueId")String issueId);
/**
* @Description 根据IssueId删除标签
* @Param issueId
* @author zxc
* @date 2020/12/10 上午10:14
*/
void deleteTagsByIssueId(@Param("issueId")String issueId);
/**
* @Description 查询此议题一条标签记录
* @Param issueId
* @author zxc
* @date 2020/12/10 下午1:49
*/
IssueTagsDTO selectOneTagByIssueId(@Param("issueId")String issueId);
/**
* @Description 插入新的标签
* @Param needInsert
* @author zxc
* @date 2020/12/10 下午2:11
*/
void insertNewTags(@Param("tags") List<IssueTagsFormDTO> needInsert);
}

2
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java

@ -154,7 +154,7 @@ public class IssueProjectTagDictRedis {
}
if (status.equals(NumConstant.ONE_STR)){
//标签使用次数-1
if (redisUtils.getScore(key,formDTO)>NumConstant.ZERO){
if (null != redisUtils.getScore(key,formDTO) && redisUtils.getScore(key,formDTO)>NumConstant.ZERO){
redisUtils.zIncrementScore(key, formDTO,NumConstant.ONE_NEG);
}
}

10
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueTagsService.java

@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IssueTagsDTO;
import com.epmet.dto.form.AddTagFormDTO;
import com.epmet.dto.form.IssueTagsSaveFormDTO;
import com.epmet.dto.result.AddTagResultDTO;
import com.epmet.entity.IssueTagsEntity;
@ -112,4 +113,13 @@ public interface IssueTagsService extends BaseService<IssueTagsEntity> {
* @date 2020/12/9 下午3:29
*/
AddTagResultDTO addTag(AddTagFormDTO form, TokenDto tokenDto);
/**
* @Description 议题标签保存/修改
* @Param form
* @Param tokenDto
* @author zxc
* @date 2020/12/10 上午9:37
*/
void issueTagSave(IssueTagsSaveFormDTO form, TokenDto tokenDto);
}

69
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueTagsServiceImpl.java

@ -29,6 +29,9 @@ import com.epmet.dao.IssueProjectTagDictDao;
import com.epmet.dao.IssueTagsDao;
import com.epmet.dto.IssueTagsDTO;
import com.epmet.dto.form.AddTagFormDTO;
import com.epmet.dto.form.IssueTagFormDTO;
import com.epmet.dto.form.IssueTagsFormDTO;
import com.epmet.dto.form.IssueTagsSaveFormDTO;
import com.epmet.dto.result.AddTagResultDTO;
import com.epmet.dto.result.IssueCategoryTagResultDTO;
import com.epmet.entity.IssueProjectTagDictEntity;
@ -41,11 +44,14 @@ 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 org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static java.util.stream.Collectors.toList;
/**
* 议题关联标签表
*
@ -134,6 +140,7 @@ public class IssueTagsServiceImpl extends BaseServiceImpl<IssueTagsDao, IssueTag
* @date 2020/12/9 下午3:29
*/
@Override
@Transactional(rollbackFor = Exception.class)
public AddTagResultDTO addTag(AddTagFormDTO form, TokenDto tokenDto) {
form.setCustomerId(tokenDto.getCustomerId());
String tagId = baseDao.selectTagNameCount(form);
@ -155,4 +162,66 @@ public class IssueTagsServiceImpl extends BaseServiceImpl<IssueTagsDao, IssueTag
return new AddTagResultDTO();
}
/**
* @Description 议题标签保存/修改
* @Param form
* @Param tokenDto
* @author zxc
* @date 2020/12/10 上午9:37
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void issueTagSave(IssueTagsSaveFormDTO form, TokenDto tokenDto) {
String customerId = tokenDto.getCustomerId();
List<IssueTagFormDTO> tags = baseDao.selectTagsByIssueId(form.getIssueId());
if (CollectionUtils.isEmpty(form.getTagList())){
// 清空此议题的标签
if (!CollectionUtils.isEmpty(tags)){
tags.forEach(t -> {
// 缓存标签 -1
dictRedis.editTagUseCount(customerId,t.getCategoryId(),t,NumConstant.ONE_STR);
});
// 数据库有关标签使用次数 -1 0:+1 ; 1:-1;
issueProjectTagDictDao.updateTagsUseCount(tags,customerId,NumConstant.ONE_STR);
}
// 删除数据库有关此议题标签
baseDao.deleteTagsByIssueId(form.getIssueId());
return;
}
List<IssueTagFormDTO> selectTags = form.getTagList();
List<IssueTagFormDTO> newTags = issueProjectTagDictDao.selectTagId(selectTags, customerId);
IssueTagsDTO issueTagsDTO = baseDao.selectOneTagByIssueId(form.getIssueId());
if (!CollectionUtils.isEmpty(newTags)){
// 需要删除的标签
List<IssueTagFormDTO> delList = tags.stream().filter(tag -> !newTags.contains(tag)).collect(toList());
if (!CollectionUtils.isEmpty(delList)){
delList.forEach(d -> {
dictRedis.editTagUseCount(customerId,d.getCategoryId(),d,NumConstant.ONE_STR);
});
// 数据库有关标签使用次数 -1 0:+1 ; 1:-1;
issueProjectTagDictDao.updateTagsUseCount(delList,customerId,NumConstant.ONE_STR);
}
// 需要新增的标签
List<IssueTagFormDTO> addList = newTags.stream().filter(tag -> !tags.contains(tag)).collect(toList());
if (!CollectionUtils.isEmpty(addList)){
addList.forEach(a -> {
// 缓存标签+1
dictRedis.editTagUseCount(customerId,a.getCategoryId(),a,NumConstant.ZERO_STR);
});
// 数据库对应标签 议题使用次数 +1
issueProjectTagDictDao.updateTagsUseCount(addList,customerId,NumConstant.ZERO_STR);
}
// 删除数据库有关此议题标签
baseDao.deleteTagsByIssueId(form.getIssueId());
// 新增最新议题标签
List<IssueTagsFormDTO> needInsert = ConvertUtils.sourceToTarget(newTags, IssueTagsFormDTO.class);
needInsert.forEach(n -> {
n.setCustomerId(customerId);
n.setGridId(issueTagsDTO.getGridId());
n.setIssueId(form.getIssueId());
});
baseDao.insertNewTags(needInsert);
}
}
}

33
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml

@ -3,6 +3,39 @@
<mapper namespace="com.epmet.dao.IssueProjectTagDictDao">
<!-- 更新标签使用次数 -->
<update id="updateTagsUseCount">
UPDATE issue_project_tag_dict
<if test="status == 1">
SET ISSUE_USE_COUNT = (CASE WHEN ISSUE_USE_COUNT = 0 THEN 0 ELSE (ISSUE_USE_COUNT - 1) END)
</if>
<if test="status == 0">
SET ISSUE_USE_COUNT = ISSUE_USE_COUNT + 1
</if>
<where>
DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
AND
<foreach collection="tags" item="t" open=" ( " separator=" OR " close=" ) ">
CATEGORY_ID = #{t.id}
AND TAG_NAME = #{t.tagName}
</foreach>
</where>
</update>
<!-- 查询标签ID -->
<select id="selectTagId" resultType="com.epmet.dto.form.IssueTagFormDTO">
SELECT ID AS tagId,
TAG_NAME,
CATEGORY_ID,
id
FROM issue_project_tag_dict
WHERE DEL_FLAG = 0
AND
<foreach collection="tags" item="t" separator="or" open="(" close=")">
ID = #{t.id}
</foreach>
</select>
<select id="selectDefaultList" resultType="com.epmet.dto.result.IssueCategoryTagResultDTO">
SELECT
TAG_ID AS "id",

54
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueTagsDao.xml

@ -35,7 +35,59 @@
FROM issue_project_tag_dict
WHERE DEL_FLAG = 0
AND TAG_NAME = #{tagName}
AND (CUSTOMER_ID = 'default' OR CUSTOMER_ID = #{customerId})
AND CUSTOMER_ID = #{customerId}
</select>
<!-- 根据IssueId查询标签 -->
<select id="selectTagsByIssueId" resultType="com.epmet.dto.form.IssueTagFormDTO">
SELECT
it.TAG_ID AS id,
it.TAG_NAME,
td.CATEGORY_ID,
it.TAG_ID AS tagId
FROM issue_tags it
LEFT JOIN issue_project_tag_dict td ON td.id = it.TAG_ID
WHERE it.DEL_FLAG = 0
AND td.DEL_FLAG = 0
AND it.ISSUE_ID = #{issueId}
</select>
<!-- 根据IssueId删除标签 -->
<delete id="deleteTagsByIssueId">
DELETE FROM issue_tags
WHERE DEL_FLAG = 0
AND ISSUE_ID = #{issueId}
</delete>
<!-- 查询此议题一条标签记录 -->
<select id="selectOneTagByIssueId" resultType="com.epmet.dto.IssueTagsDTO">
SELECT * FROM issue_tags
WHERE DEL_FLAG = 0
AND ISSUE_ID = #{issueId}
ORDER BY CREATED_TIME DESC
LIMIT 1
</select>
<!-- 插入新的标签 -->
<insert id="insertNewTags">
INSERT INTO issue_tags ( ID, CUSTOMER_ID, GRID_ID, ISSUE_ID, TAG_ID, TAG_NAME, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME )
VALUES
<foreach collection="tags" item="l" separator=",">
(
REPLACE ( UUID(), '-', '' ),
#{l.customerId},
#{l.gridId},
#{l.issueId},
#{l.tagId},
#{l.tagName},
#{l.delFlag},
#{l.revision},
#{l.createdBy},
NOW(),
#{l.updatedBy},
NOW()
)
</foreach>
</insert>
</mapper>
Loading…
Cancel
Save