调整服务指令-去除指令标签,新增体型标签、情绪标签

This commit is contained in:
1378012178@qq.com 2025-04-28 16:08:15 +08:00
parent a16e6efbe4
commit d6ba60f650
32 changed files with 885 additions and 325 deletions

View File

@ -30,8 +30,8 @@
cdt.tag_name cdt.tag_name
FROM nu_config_service_directive csd FROM nu_config_service_directive csd
LEFT JOIN ( LEFT JOIN (
select GROUP_CONCAT(c.tag_name) tag_name,b.directive_id from nu_directive_tag b select GROUP_CONCAT(c.tag_name) tag_name,b.directive_id from nu_directive_body_tag b
LEFT JOIN nu_config_directive_tag c on b.tag_id = c.id LEFT JOIN nu_config_body_tag c on b.tag_id = c.id
GROUP BY b.directive_id GROUP BY b.directive_id
) cdt on csd.id = cdt.directive_id ) cdt on csd.id = cdt.directive_id
LEFT JOIN nu_config_service_type cst ON csd.type_id = cst.id LEFT JOIN nu_config_service_type cst ON csd.type_id = cst.id

View File

@ -42,18 +42,31 @@
<result property="typeName" column="cst_type_name" /> <result property="typeName" column="cst_type_name" />
<result property="previewFile" column="preview_file"/> <result property="previewFile" column="preview_file"/>
<result property="immediateFile" column="immediate_file"/> <result property="immediateFile" column="immediate_file"/>
<!-- 关联的标签列表 --> <!-- 关联的体型标签列表 -->
<collection property="tagList" ofType="com.nu.modules.directivetag.entity.DirectiveTag"> <collection property="bodyTagList" ofType="com.nu.modules.directivetag.body.entity.DirectiveBodyTag">
<id property="id" column="tag_id" /> <id property="id" column="tag_id" />
<result property="tagName" column="tag_name" /> <result property="tagName" column="bodytag_name" />
<result property="sort" column="tag_sort" /> <result property="sort" column="bodytag_sort" />
<result property="izEnabled" column="tag_iz_enabled" /> <result property="izEnabled" column="bodytag_iz_enabled" />
<result property="delFlag" column="tag_del_flag" /> <result property="delFlag" column="bodytag_del_flag" />
<result property="createBy" column="tag_create_by" /> <result property="createBy" column="bodytag_create_by" />
<result property="createTime" column="tag_create_time" /> <result property="createTime" column="bodytag_create_time" />
<result property="updateBy" column="tag_update_by" /> <result property="updateBy" column="bodytag_update_by" />
<result property="updateTime" column="tag_update_time" /> <result property="updateTime" column="bodytag_update_time" />
<result property="sysOrgCode" column="tag_sys_org_code" /> <result property="sysOrgCode" column="bodytag_sys_org_code" />
</collection>
<!-- 关联的情绪标签列表 -->
<collection property="emotionTagList" ofType="com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag">
<id property="id" column="emotag_id" />
<result property="tagName" column="emotag_name" />
<result property="sort" column="emotag_sort" />
<result property="izEnabled" column="emotag_iz_enabled" />
<result property="delFlag" column="emotag_del_flag" />
<result property="createBy" column="emotag_create_by" />
<result property="createTime" column="emotag_create_time" />
<result property="updateBy" column="emotag_update_by" />
<result property="updateTime" column="emotag_update_time" />
<result property="sysOrgCode" column="emotag_sys_org_code" />
</collection> </collection>
</collection> </collection>
</resultMap> </resultMap>
@ -95,16 +108,26 @@
csd.mp4_file, csd.mp4_file,
csd.preview_file, csd.preview_file,
csd.immediate_file, csd.immediate_file,
cdt.id AS tag_id, cdbt.id AS bodytag_id,
cdt.tag_name, cdbt.tag_name AS bodytag_name,
cdt.sort AS tag_sort, cdbt.sort AS bodytag_sort,
cdt.iz_enabled AS tag_iz_enabled, cdbt.iz_enabled AS bodytag_iz_enabled,
cdt.del_flag AS tag_del_flag, cdbt.del_flag AS bodytag_del_flag,
cdt.create_by AS tag_create_by, cdbt.create_by AS bodytag_create_by,
cdt.create_time AS tag_create_time, cdbt.create_time AS bodytag_create_time,
cdt.update_by AS tag_update_by, cdbt.update_by AS bodytag_update_by,
cdt.update_time AS tag_update_time, cdbt.update_time AS bodytag_update_time,
cdt.sys_org_code AS tag_sys_org_code, cdbt.sys_org_code AS bodytag_sys_org_code,
cdet.id AS emotag_id,
cdet.tag_name AS emotag_name,
cdet.sort AS emotag_sort,
cdet.iz_enabled AS emotag_iz_enabled,
cdet.del_flag AS emotag_del_flag,
cdet.create_by AS emotag_create_by,
cdet.create_time AS emotag_create_time,
cdet.update_by AS emotag_update_by,
cdet.update_time AS emotag_update_time,
cdet.sys_org_code AS emotag_sys_org_code,
csc.category_name AS csc_category_name, csc.category_name AS csc_category_name,
cst.type_name AS cst_type_name cst.type_name AS cst_type_name
FROM FROM
@ -117,8 +140,10 @@
</where>) dp </where>) dp
LEFT JOIN nu_package_directive pd ON dp.id = pd.package_id LEFT JOIN nu_package_directive pd ON dp.id = pd.package_id
LEFT JOIN nu_config_service_directive csd ON pd.directive_id = csd.id LEFT JOIN nu_config_service_directive csd ON pd.directive_id = csd.id
LEFT JOIN nu_directive_tag dt ON csd.id = dt.directive_id LEFT JOIN nu_directive_body_tag bdt ON csd.id = bdt.directive_id
LEFT JOIN nu_config_directive_tag cdt ON dt.tag_id = cdt.id LEFT JOIN nu_config_body_tag cdbt ON bdt.tag_id = cdbt.id
LEFT JOIN nu_directive_emotion_tag edt ON csd.id = edt.directive_id
LEFT JOIN nu_config_emotion_tag cdet ON edt.tag_id = cdet.id
LEFT JOIN nu_config_service_category csc ON csd.category_id = csc.id LEFT JOIN nu_config_service_category csc ON csd.category_id = csc.id
LEFT JOIN nu_config_service_type cst ON csd.type_id = cst.id LEFT JOIN nu_config_service_type cst ON csd.type_id = cst.id
order by dp.create_time desc order by dp.create_time desc

View File

@ -1,11 +1,10 @@
package com.nu.modules.directivetag.controller; package com.nu.modules.directivetag.body.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.directivetag.entity.DirectiveTag; import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
import com.nu.modules.directivetag.service.IDirectiveTagService; import com.nu.modules.directivetag.body.service.IDirectiveBodyTagService;
import com.rabbitmq.client.impl.AMQImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -14,14 +13,10 @@ import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum; import org.jeecg.common.system.query.QueryRuleEnum;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.DispatcherType;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Arrays; import java.util.Arrays;
@ -29,18 +24,18 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
* @Description: 指令标签 * @Description: 体型标签
* @Author: 张明远 * @Author: 张明远
* @Date: 2025-03-17 * @Date: 2025-03-17
* @Version: V1.0 * @Version: V1.0
*/ */
@Api(tags="指令标签") @Api(tags="体型标签")
@RestController @RestController
@RequestMapping("/directiveTag/directiveTag") @RequestMapping("/directiveTag/bodyTag")
@Slf4j @Slf4j
public class DirectiveTagController extends JeecgController<DirectiveTag, IDirectiveTagService> { public class DirectiveBodyTagController extends JeecgController<DirectiveBodyTag, IDirectiveBodyTagService> {
@Autowired @Autowired
private IDirectiveTagService directiveTagService; private IDirectiveBodyTagService directiveTagService;
/** /**
* 分页列表查询 * 分页列表查询
@ -51,20 +46,20 @@ public class DirectiveTagController extends JeecgController<DirectiveTag, IDirec
* @param req * @param req
* @return * @return
*/ */
//@AutoLog(value = "指令标签-分页列表查询") //@AutoLog(value = "体型标签-分页列表查询")
@ApiOperation(value="指令标签-分页列表查询", notes="指令标签-分页列表查询") @ApiOperation(value="体型标签-分页列表查询", notes="体型标签-分页列表查询")
@GetMapping(value = "/list") @GetMapping(value = "/list")
public Result<IPage<DirectiveTag>> queryPageList(DirectiveTag directiveTag, public Result<IPage<DirectiveBodyTag>> queryPageList(DirectiveBodyTag directiveTag,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) { HttpServletRequest req) {
// 自定义查询规则 // 自定义查询规则
Map<String, QueryRuleEnum> customeRuleMap = new HashMap<>(); Map<String, QueryRuleEnum> customeRuleMap = new HashMap<>();
// 自定义多选的查询规则为LIKE_WITH_OR // 自定义多选的查询规则为LIKE_WITH_OR
customeRuleMap.put("izEnabled", QueryRuleEnum.LIKE_WITH_OR); customeRuleMap.put("izEnabled", QueryRuleEnum.LIKE_WITH_OR);
QueryWrapper<DirectiveTag> queryWrapper = QueryGenerator.initQueryWrapper(directiveTag, req.getParameterMap(),customeRuleMap); QueryWrapper<DirectiveBodyTag> queryWrapper = QueryGenerator.initQueryWrapper(directiveTag, req.getParameterMap(),customeRuleMap);
Page<DirectiveTag> page = new Page<DirectiveTag>(pageNo, pageSize); Page<DirectiveBodyTag> page = new Page<DirectiveBodyTag>(pageNo, pageSize);
IPage<DirectiveTag> pageList = directiveTagService.page(page, queryWrapper); IPage<DirectiveBodyTag> pageList = directiveTagService.page(page, queryWrapper);
return Result.OK(pageList); return Result.OK(pageList);
} }
@ -74,10 +69,10 @@ public class DirectiveTagController extends JeecgController<DirectiveTag, IDirec
* @param directiveTag * @param directiveTag
* @return * @return
*/ */
@AutoLog(value = "指令标签-添加") @AutoLog(value = "体型标签-添加")
@ApiOperation(value="指令标签-添加", notes="指令标签-添加") @ApiOperation(value="体型标签-添加", notes="体型标签-添加")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody DirectiveTag directiveTag) { public Result<String> add(@RequestBody DirectiveBodyTag directiveTag) {
directiveTagService.save(directiveTag); directiveTagService.save(directiveTag);
return Result.OK("添加成功!"); return Result.OK("添加成功!");
} }
@ -88,10 +83,10 @@ public class DirectiveTagController extends JeecgController<DirectiveTag, IDirec
* @param directiveTag * @param directiveTag
* @return * @return
*/ */
@AutoLog(value = "指令标签-编辑") @AutoLog(value = "体型标签-编辑")
@ApiOperation(value="指令标签-编辑", notes="指令标签-编辑") @ApiOperation(value="体型标签-编辑", notes="体型标签-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody DirectiveTag directiveTag) { public Result<String> edit(@RequestBody DirectiveBodyTag directiveTag) {
directiveTagService.updateById(directiveTag); directiveTagService.updateById(directiveTag);
return Result.OK("编辑成功!"); return Result.OK("编辑成功!");
} }
@ -102,8 +97,8 @@ public class DirectiveTagController extends JeecgController<DirectiveTag, IDirec
* @param id * @param id
* @return * @return
*/ */
@AutoLog(value = "指令标签-通过id删除") @AutoLog(value = "体型标签-通过id删除")
@ApiOperation(value="指令标签-通过id删除", notes="指令标签-通过id删除") @ApiOperation(value="体型标签-通过id删除", notes="体型标签-通过id删除")
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) { public Result<String> delete(@RequestParam(name="id",required=true) String id) {
if(directiveTagService.isUsed(id)){ if(directiveTagService.isUsed(id)){
@ -119,8 +114,8 @@ public class DirectiveTagController extends JeecgController<DirectiveTag, IDirec
* @param ids * @param ids
* @return * @return
*/ */
@AutoLog(value = "指令标签-批量删除") @AutoLog(value = "体型标签-批量删除")
@ApiOperation(value="指令标签-批量删除", notes="指令标签-批量删除") @ApiOperation(value="体型标签-批量删除", notes="体型标签-批量删除")
@DeleteMapping(value = "/deleteBatch") @DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
if(directiveTagService.isUsed(ids)){ if(directiveTagService.isUsed(ids)){
@ -136,11 +131,11 @@ public class DirectiveTagController extends JeecgController<DirectiveTag, IDirec
* @param id * @param id
* @return * @return
*/ */
//@AutoLog(value = "指令标签-通过id查询") //@AutoLog(value = "体型标签-通过id查询")
@ApiOperation(value="指令标签-通过id查询", notes="指令标签-通过id查询") @ApiOperation(value="体型标签-通过id查询", notes="体型标签-通过id查询")
@GetMapping(value = "/queryById") @GetMapping(value = "/queryById")
public Result<DirectiveTag> queryById(@RequestParam(name="id",required=true) String id) { public Result<DirectiveBodyTag> queryById(@RequestParam(name="id",required=true) String id) {
DirectiveTag directiveTag = directiveTagService.getById(id); DirectiveBodyTag directiveTag = directiveTagService.getById(id);
if(directiveTag==null) { if(directiveTag==null) {
return Result.error("未找到对应数据"); return Result.error("未找到对应数据");
} }
@ -154,8 +149,8 @@ public class DirectiveTagController extends JeecgController<DirectiveTag, IDirec
* @param directiveTag * @param directiveTag
*/ */
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, DirectiveTag directiveTag) { public ModelAndView exportXls(HttpServletRequest request, DirectiveBodyTag directiveTag) {
return super.exportXls(request, directiveTag, DirectiveTag.class, "指令标签"); return super.exportXls(request, directiveTag, DirectiveBodyTag.class, "体型标签");
} }
/** /**
@ -167,7 +162,7 @@ public class DirectiveTagController extends JeecgController<DirectiveTag, IDirec
*/ */
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, DirectiveTag.class); return super.importExcel(request, response, DirectiveBodyTag.class);
} }
} }

View File

@ -0,0 +1,74 @@
package com.nu.modules.directivetag.body.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 体型标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
@Data
@TableName("nu_config_body_tag")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_config_body_tag对象", description="体型标签")
public class DirectiveBodyTag implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private String id;
/**标签名称*/
@Excel(name = "标签名称", width = 15)
@ApiModelProperty(value = "标签名称")
private String tagName;
/**排序*/
@Excel(name = "排序", width = 15)
@ApiModelProperty(value = "排序")
private Integer sort;
/**是否启用 0启用 1未启用*/
@Excel(name = "是否启用", width = 15, dicCode = "iz_enabled")
@Dict(dicCode = "iz_enabled")
@ApiModelProperty(value = "是否启用")
private String izEnabled;
/**是否删除 0未删除 1删除*/
@Excel(name = "是否删除", width = 15)
@ApiModelProperty(value = "是否删除")
@TableLogic
private String delFlag;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
}

View File

@ -1,4 +1,4 @@
package com.nu.modules.directivetag.entity; package com.nu.modules.directivetag.body.entity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
@ -9,17 +9,17 @@ import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
/** /**
* @Description: 服务指令-指令标签中间表 * @Description: 服务指令-体型标签中间表
* @Author: 张明远 * @Author: 张明远
* @Date: 2025-4-23 09:26:04 * @Date: 2025-4-23 09:26:04
* @Version: V1.0 * @Version: V1.0
*/ */
@Data @Data
@TableName("nu_directive_tag") @TableName("nu_directive_body_tag")
@Accessors(chain = true) @Accessors(chain = true)
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_directive_tag对象", description="服务指令-指令标签中间表") @ApiModel(value="nu_directive_body_tag对象", description="服务指令-体型标签中间表")
public class DirectiveTagRelation implements Serializable { public class DirectiveBodyTagRelation implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String directiveId; private String directiveId;

View File

@ -0,0 +1,14 @@
package com.nu.modules.directivetag.body.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
/**
* @Description: 体型标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface DirectiveBodyTagMapper extends BaseMapper<DirectiveBodyTag> {
}

View File

@ -0,0 +1,18 @@
package com.nu.modules.directivetag.body.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.directivetag.body.entity.DirectiveBodyTagRelation;
import java.util.List;
/**
* @Description: 体型标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface DirectiveBodyTagRelationMapper extends BaseMapper<DirectiveBodyTagRelation> {
void removeAllRelation();
List<DirectiveBodyTagRelation> selectAllRelation(List<String> ids);
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.directivetag.mapper.DirectiveTagMapper"> <mapper namespace="com.nu.modules.directivetag.body.mapper.DirectiveBodyTagMapper">
</mapper> </mapper>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.directivetag.mapper.DirectiveTagRelationMapper"> <mapper namespace="com.nu.modules.directivetag.body.mapper.DirectiveBodyTagRelationMapper">
<delete id="removeAllRelation"> <delete id="removeAllRelation">
delete from nu_directive_tag delete from nu_directive_body_tag
</delete> </delete>
<select id="selectAllRelation" resultType="com.nu.modules.directivetag.entity.DirectiveTagRelation"> <select id="selectAllRelation" resultType="com.nu.modules.directivetag.body.entity.DirectiveBodyTagRelation">
select * from nu_directive_tag select * from nu_directive_body_tag
<where> <where>
directive_id in directive_id in
<foreach collection="ids" item="id" open="(" separator="," close=")"> <foreach collection="ids" item="id" open="(" separator="," close=")">

View File

@ -0,0 +1,29 @@
package com.nu.modules.directivetag.body.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
import com.nu.modules.directivetag.body.entity.DirectiveBodyTagRelation;
import java.util.List;
/**
* @Description: 体型标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface IDirectiveBodyTagService extends IService<DirectiveBodyTag> {
/**
* 查询数据是否已被使用
* @param ids
* @return
*/
boolean isUsed(String id);
public void removeAllRelation();
public List<DirectiveBodyTagRelation> selectAllRelation(String dataSourceCode, List<String> ids);
void insertAllRelation(List<DirectiveBodyTagRelation> relations);
}

View File

@ -1,13 +1,12 @@
package com.nu.modules.directivetag.service.impl; package com.nu.modules.directivetag.body.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists; import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
import com.nu.modules.directivetag.entity.DirectiveTag; import com.nu.modules.directivetag.body.entity.DirectiveBodyTagRelation;
import com.nu.modules.directivetag.entity.DirectiveTagRelation; import com.nu.modules.directivetag.body.mapper.DirectiveBodyTagMapper;
import com.nu.modules.directivetag.mapper.DirectiveTagMapper; import com.nu.modules.directivetag.body.mapper.DirectiveBodyTagRelationMapper;
import com.nu.modules.directivetag.mapper.DirectiveTagRelationMapper; import com.nu.modules.directivetag.body.service.IDirectiveBodyTagService;
import com.nu.modules.directivetag.service.IDirectiveTagService;
import com.nu.modules.servicedirective.mapper.ConfigServiceDirectiveMapper; import com.nu.modules.servicedirective.mapper.ConfigServiceDirectiveMapper;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -17,18 +16,18 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
* @Description: 指令标签 * @Description: 体型标签
* @Author: 张明远 * @Author: 张明远
* @Date: 2025-03-17 * @Date: 2025-03-17
* @Version: V1.0 * @Version: V1.0
*/ */
@Service @Service
public class DirectiveTagServiceImpl extends ServiceImpl<DirectiveTagMapper, DirectiveTag> implements IDirectiveTagService { public class DirectiveBodyTagServiceImpl extends ServiceImpl<DirectiveBodyTagMapper, DirectiveBodyTag> implements IDirectiveBodyTagService {
@Autowired @Autowired
private ConfigServiceDirectiveMapper serviceDirectiveMapper; private ConfigServiceDirectiveMapper serviceDirectiveMapper;
@Autowired @Autowired
private DirectiveTagRelationMapper tagRelationMapper; private DirectiveBodyTagRelationMapper tagRelationMapper;
@Override @Override
public boolean isUsed(String ids) { public boolean isUsed(String ids) {
@ -37,7 +36,7 @@ public class DirectiveTagServiceImpl extends ServiceImpl<DirectiveTagMapper, Dir
} }
boolean result = false; boolean result = false;
//是否已被服务指令使用 //是否已被服务指令使用
int i = serviceDirectiveMapper.queryCountByTagIds(Arrays.asList(ids.split(","))); int i = serviceDirectiveMapper.queryCountByBodyTagIds(Arrays.asList(ids.split(",")));
if (i > 0) { if (i > 0) {
result = true; result = true;
} }
@ -51,12 +50,12 @@ public class DirectiveTagServiceImpl extends ServiceImpl<DirectiveTagMapper, Dir
@Override @Override
@DS("#dataSourceCode") @DS("#dataSourceCode")
public List<DirectiveTagRelation> selectAllRelation(String dataSourceCode, List<String> ids) { public List<DirectiveBodyTagRelation> selectAllRelation(String dataSourceCode, List<String> ids) {
return tagRelationMapper.selectAllRelation(ids); return tagRelationMapper.selectAllRelation(ids);
} }
@Override @Override
public void insertAllRelation(List<DirectiveTagRelation> idRelations) { public void insertAllRelation(List<DirectiveBodyTagRelation> idRelations) {
idRelations.forEach(ir -> { idRelations.forEach(ir -> {
tagRelationMapper.insert(ir); tagRelationMapper.insert(ir);
}); });

View File

@ -0,0 +1,168 @@
package com.nu.modules.directivetag.emotion.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
import com.nu.modules.directivetag.emotion.service.IDirectiveEmotionTagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @Description: 情绪标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
@Api(tags="情绪标签")
@RestController
@RequestMapping("/directiveTag/emotionTag")
@Slf4j
public class DirectiveEmotionTagController extends JeecgController<DirectiveEmotionTag, IDirectiveEmotionTagService> {
@Autowired
private IDirectiveEmotionTagService directiveTagService;
/**
* 分页列表查询
*
* @param directiveTag
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "情绪标签-分页列表查询")
@ApiOperation(value="情绪标签-分页列表查询", notes="情绪标签-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<DirectiveEmotionTag>> queryPageList(DirectiveEmotionTag directiveTag,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
// 自定义查询规则
Map<String, QueryRuleEnum> customeRuleMap = new HashMap<>();
// 自定义多选的查询规则为LIKE_WITH_OR
customeRuleMap.put("izEnabled", QueryRuleEnum.LIKE_WITH_OR);
QueryWrapper<DirectiveEmotionTag> queryWrapper = QueryGenerator.initQueryWrapper(directiveTag, req.getParameterMap(),customeRuleMap);
Page<DirectiveEmotionTag> page = new Page<DirectiveEmotionTag>(pageNo, pageSize);
IPage<DirectiveEmotionTag> pageList = directiveTagService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param directiveTag
* @return
*/
@AutoLog(value = "情绪标签-添加")
@ApiOperation(value="情绪标签-添加", notes="情绪标签-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody DirectiveEmotionTag directiveTag) {
directiveTagService.save(directiveTag);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param directiveTag
* @return
*/
@AutoLog(value = "情绪标签-编辑")
@ApiOperation(value="情绪标签-编辑", notes="情绪标签-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody DirectiveEmotionTag directiveTag) {
directiveTagService.updateById(directiveTag);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "情绪标签-通过id删除")
@ApiOperation(value="情绪标签-通过id删除", notes="情绪标签-通过id删除")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
if(directiveTagService.isUsed(id)){
return Result.error("已被使用,无法删除!");
}
directiveTagService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "情绪标签-批量删除")
@ApiOperation(value="情绪标签-批量删除", notes="情绪标签-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
if(directiveTagService.isUsed(ids)){
return Result.error("已被使用,无法删除!");
}
this.directiveTagService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "情绪标签-通过id查询")
@ApiOperation(value="情绪标签-通过id查询", notes="情绪标签-通过id查询")
@GetMapping(value = "/queryById")
public Result<DirectiveEmotionTag> queryById(@RequestParam(name="id",required=true) String id) {
DirectiveEmotionTag directiveTag = directiveTagService.getById(id);
if(directiveTag==null) {
return Result.error("未找到对应数据");
}
return Result.OK(directiveTag);
}
/**
* 导出excel
*
* @param request
* @param directiveTag
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, DirectiveEmotionTag directiveTag) {
return super.exportXls(request, directiveTag, DirectiveEmotionTag.class, "情绪标签");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, DirectiveEmotionTag.class);
}
}

View File

@ -1,4 +1,4 @@
package com.nu.modules.directivetag.entity; package com.nu.modules.directivetag.emotion.entity;
import java.io.Serializable; import java.io.Serializable;
@ -17,17 +17,17 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
* @Description: 指令标签 * @Description: 情绪标签
* @Author: 张明远 * @Author: 张明远
* @Date: 2025-03-17 * @Date: 2025-03-17
* @Version: V1.0 * @Version: V1.0
*/ */
@Data @Data
@TableName("nu_config_directive_tag") @TableName("nu_config_emotion_tag")
@Accessors(chain = true) @Accessors(chain = true)
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_config_directive_tag对象", description="指令标签") @ApiModel(value="nu_config_emotion_tag对象", description="情绪标签")
public class DirectiveTag implements Serializable { public class DirectiveEmotionTag implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**id*/ /**id*/

View File

@ -0,0 +1,28 @@
package com.nu.modules.directivetag.emotion.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Description: 服务指令-情绪标签中间表
* @Author: 张明远
* @Date: 2025-4-23 09:26:04
* @Version: V1.0
*/
@Data
@TableName("nu_directive_emotion_tag")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_directive_emotion_tag对象", description="服务指令-情绪标签中间表")
public class DirectiveEmotionTagRelation implements Serializable {
private static final long serialVersionUID = 1L;
private String directiveId;
private String tagId;
}

View File

@ -0,0 +1,14 @@
package com.nu.modules.directivetag.emotion.mapper;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 情绪标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface DirectiveEmotionTagMapper extends BaseMapper<DirectiveEmotionTag> {
}

View File

@ -0,0 +1,18 @@
package com.nu.modules.directivetag.emotion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTagRelation;
import java.util.List;
/**
* @Description: 情绪标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface DirectiveEmotionTagRelationMapper extends BaseMapper<DirectiveEmotionTagRelation> {
void removeAllRelation();
List<DirectiveEmotionTagRelation> selectAllRelation(List<String> ids);
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.directivetag.emotion.mapper.DirectiveEmotionTagMapper">
</mapper>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.directivetag.emotion.mapper.DirectiveEmotionTagRelationMapper">
<delete id="removeAllRelation">
delete from nu_directive_emotion_tag
</delete>
<select id="selectAllRelation" resultType="com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTagRelation">
select * from nu_directive_emotion_tag
<where>
directive_id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</where>
</select>
</mapper>

View File

@ -0,0 +1,29 @@
package com.nu.modules.directivetag.emotion.service;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTagRelation;
import java.util.List;
/**
* @Description: 情绪标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface IDirectiveEmotionTagService extends IService<DirectiveEmotionTag> {
/**
* 查询数据是否已被使用
* @param ids
* @return
*/
boolean isUsed(String id);
public void removeAllRelation();
public List<DirectiveEmotionTagRelation> selectAllRelation(String dataSourceCode, List<String> ids);
void insertAllRelation(List<DirectiveEmotionTagRelation> relations);
}

View File

@ -0,0 +1,63 @@
package com.nu.modules.directivetag.emotion.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTagRelation;
import com.nu.modules.directivetag.emotion.mapper.DirectiveEmotionTagMapper;
import com.nu.modules.directivetag.emotion.mapper.DirectiveEmotionTagRelationMapper;
import com.nu.modules.directivetag.emotion.service.IDirectiveEmotionTagService;
import com.nu.modules.servicedirective.mapper.ConfigServiceDirectiveMapper;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
* @Description: 情绪标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
@Service
public class DirectiveEmotionTagServiceImpl extends ServiceImpl<DirectiveEmotionTagMapper, DirectiveEmotionTag> implements IDirectiveEmotionTagService {
@Autowired
private ConfigServiceDirectiveMapper serviceDirectiveMapper;
@Autowired
private DirectiveEmotionTagRelationMapper tagRelationMapper;
@Override
public boolean isUsed(String ids) {
if (StringUtils.isBlank(ids)) {
return false;
}
boolean result = false;
//是否已被服务指令使用
int i = serviceDirectiveMapper.queryCountByEmotionTagIds(Arrays.asList(ids.split(",")));
if (i > 0) {
result = true;
}
return result;
}
@Override
public void removeAllRelation() {
tagRelationMapper.removeAllRelation();
}
@Override
@DS("#dataSourceCode")
public List<DirectiveEmotionTagRelation> selectAllRelation(String dataSourceCode, List<String> ids) {
return tagRelationMapper.selectAllRelation(ids);
}
@Override
public void insertAllRelation(List<DirectiveEmotionTagRelation> idRelations) {
idRelations.forEach(ir -> {
tagRelationMapper.insert(ir);
});
}
}

View File

@ -1,14 +0,0 @@
package com.nu.modules.directivetag.mapper;
import com.nu.modules.directivetag.entity.DirectiveTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 指令标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface DirectiveTagMapper extends BaseMapper<DirectiveTag> {
}

View File

@ -1,18 +0,0 @@
package com.nu.modules.directivetag.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.directivetag.entity.DirectiveTagRelation;
import java.util.List;
/**
* @Description: 指令标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface DirectiveTagRelationMapper extends BaseMapper<DirectiveTagRelation> {
void removeAllRelation();
List<DirectiveTagRelation> selectAllRelation(List<String> ids);
}

View File

@ -1,29 +0,0 @@
package com.nu.modules.directivetag.service;
import com.nu.modules.directivetag.entity.DirectiveTag;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.directivetag.entity.DirectiveTagRelation;
import java.util.List;
/**
* @Description: 指令标签
* @Author: 张明远
* @Date: 2025-03-17
* @Version: V1.0
*/
public interface IDirectiveTagService extends IService<DirectiveTag> {
/**
* 查询数据是否已被使用
* @param ids
* @return
*/
boolean isUsed(String id);
public void removeAllRelation();
public List<DirectiveTagRelation> selectAllRelation(String dataSourceCode, List<String> ids);
void insertAllRelation(List<DirectiveTagRelation> relations);
}

View File

@ -71,9 +71,15 @@ public class ConfigServiceDirectiveController extends JeecgController<ConfigServ
queryWrapper.select("id"); queryWrapper.select("id");
//如果有服务指令需要提前查询下对应的服务指令id //如果有服务指令需要提前查询下对应的服务指令id
List<ConfigServiceDirective> directiveIds = null; List<ConfigServiceDirective> directiveIds = null;
if (StringUtils.isNotBlank(configServiceDirective.getTags())) { if (StringUtils.isNotBlank(configServiceDirective.getBodyTags())) {
directiveIds = configServiceDirectiveService.queryDirectiveIdByTagIds(configServiceDirective.getTags()); directiveIds = configServiceDirectiveService.queryDirectiveIdByBodyTagIds(configServiceDirective.getBodyTags());
if(directiveIds != null && !directiveIds.isEmpty()){ if (directiveIds != null && !directiveIds.isEmpty()) {
queryWrapper.in("id", directiveIds.stream().map(ConfigServiceDirective::getId).collect(Collectors.toList()));
}
}
if (StringUtils.isNotBlank(configServiceDirective.getEmotionTags())) {
directiveIds = configServiceDirectiveService.queryDirectiveIdByEmotionTagIds(configServiceDirective.getEmotionTags());
if (directiveIds != null && !directiveIds.isEmpty()) {
queryWrapper.in("id", directiveIds.stream().map(ConfigServiceDirective::getId).collect(Collectors.toList())); queryWrapper.in("id", directiveIds.stream().map(ConfigServiceDirective::getId).collect(Collectors.toList()));
} }
} }
@ -96,10 +102,16 @@ public class ConfigServiceDirectiveController extends JeecgController<ConfigServ
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody ConfigServiceDirective configServiceDirective) { public Result<String> add(@RequestBody ConfigServiceDirective configServiceDirective) {
configServiceDirectiveService.save(configServiceDirective); configServiceDirectiveService.save(configServiceDirective);
if (StringUtils.isNotBlank(configServiceDirective.getTags())) { if (StringUtils.isNotBlank(configServiceDirective.getBodyTags())) {
configServiceDirectiveService.saveTags(configServiceDirective); configServiceDirectiveService.saveBodyTags(configServiceDirective);
} else { } else {
configServiceDirectiveService.removeTags(configServiceDirective); configServiceDirectiveService.removeBodyTags(configServiceDirective);
}
if (StringUtils.isNotBlank(configServiceDirective.getEmotionTags())) {
configServiceDirectiveService.saveEmotionTags(configServiceDirective);
}else{
configServiceDirectiveService.removeEmotionTags(configServiceDirective);
} }
return Result.OK("添加成功!"); return Result.OK("添加成功!");
} }
@ -116,10 +128,16 @@ public class ConfigServiceDirectiveController extends JeecgController<ConfigServ
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<String> edit(@RequestBody ConfigServiceDirective configServiceDirective) { public Result<String> edit(@RequestBody ConfigServiceDirective configServiceDirective) {
configServiceDirectiveService.updateById(configServiceDirective); configServiceDirectiveService.updateById(configServiceDirective);
if (StringUtils.isNotBlank(configServiceDirective.getTags())) { if (StringUtils.isNotBlank(configServiceDirective.getBodyTags())) {
configServiceDirectiveService.saveTags(configServiceDirective); configServiceDirectiveService.saveBodyTags(configServiceDirective);
} else { } else {
configServiceDirectiveService.removeTags(configServiceDirective); configServiceDirectiveService.removeBodyTags(configServiceDirective);
}
if (StringUtils.isNotBlank(configServiceDirective.getEmotionTags())) {
configServiceDirectiveService.saveEmotionTags(configServiceDirective);
} else {
configServiceDirectiveService.removeEmotionTags(configServiceDirective);
} }
return Result.OK("编辑成功!"); return Result.OK("编辑成功!");
} }

View File

@ -2,7 +2,8 @@ package com.nu.modules.servicedirective.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.nu.modules.directivetag.entity.DirectiveTag; import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -143,20 +144,31 @@ public class ConfigServiceDirective implements Serializable {
//合并单元格用分类标签合并的行数 //合并单元格用分类标签合并的行数
@TableField(exist = false) @TableField(exist = false)
private Integer instructionRowSpan; private Integer instructionRowSpan;
//体型标签id,id,id
@TableField(exist = false) @TableField(exist = false)
//指令标签id,id,id private String bodyTags;
private String tags; //情绪标签id,id,id
@TableField(exist = false)
private String emotionTags;
@TableField(exist = false) @TableField(exist = false)
//服务类别名称 //服务类别名称
private String categoryName; private String categoryName;
//服务类型名称 //服务类型名称
@TableField(exist = false) @TableField(exist = false)
private String typeName; private String typeName;
//服务类型名称
@TableField(exist = false)
private String tagsName;
//服务指令标签
//体型标签
@TableField(exist = false) @TableField(exist = false)
List<DirectiveTag> tagList; List<DirectiveBodyTag> bodyTagList;
//体型标签字符串
@TableField(exist = false)
private String bodyTagsName;
//情绪标签
@TableField(exist = false)
List<DirectiveEmotionTag> emotionTagList;
//情绪标签字符串
@TableField(exist = false)
private String emotionTagsName;
} }

View File

@ -30,22 +30,37 @@ public interface ConfigServiceDirectiveMapper extends BaseMapper<ConfigServiceDi
// @Param("directive") ConfigServiceDirective directive // @Param("directive") ConfigServiceDirective directive
// ); // );
int deleteTags(@Param("directive") ConfigServiceDirective configServiceDirective); int deleteBodyTags(@Param("directive") ConfigServiceDirective configServiceDirective);
int saveTags(@Param("directive") ConfigServiceDirective configServiceDirective); int saveBodyTags(@Param("directive") ConfigServiceDirective configServiceDirective);
int deleteEmotionTags(@Param("directive") ConfigServiceDirective configServiceDirective);
int saveEmotionTags(@Param("directive") ConfigServiceDirective configServiceDirective);
/** /**
* 根据指令标签查询对应的服务指令id * 根据体型标签查询对应的服务指令id
* @return * @return
*/ */
List<ConfigServiceDirective> queryDirectiveIdByTagIds(@Param("tagIds") String tagIds); List<ConfigServiceDirective> queryDirectiveIdByBodyTagIds(@Param("tagIds") String tagIds);
/** /**
* 查询指令标签是否被使用 * 根据情绪标签查询对应的服务指令id
* @return * @return
*/ */
int queryCountByTagIds(@Param("tagIds") List<String> tagIds); List<ConfigServiceDirective> queryDirectiveIdByEmotionTagIds(@Param("tagIds") String tagIds);
/**
* 查询体型标签是否被使用
* @return
*/
int queryCountByBodyTagIds(@Param("tagIds") List<String> tagIds);
/**
* 查询情绪标签是否被使用
* @return
*/
int queryCountByEmotionTagIds(@Param("tagIds") List<String> tagIds);
int removeAll(); int removeAll();
} }

View File

@ -31,9 +31,14 @@
<result property="previewFile" column="preview_file"/> <result property="previewFile" column="preview_file"/>
<result property="immediateFile" column="immediate_file"/> <result property="immediateFile" column="immediate_file"/>
<collection property="tagList" ofType="com.nu.modules.directivetag.entity.DirectiveTag"> <collection property="bodyTagList" ofType="com.nu.modules.directivetag.body.entity.DirectiveBodyTag">
<id property="id" column="tagId"/> <id property="id" column="bodyTagId"/>
<result property="tagName" column="tagName"/> <result property="tagName" column="bodyTagName"/>
</collection>
<collection property="emotionTagList" ofType="com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag">
<id property="id" column="emotionTagId"/>
<result property="tagName" column="emotionTagName"/>
</collection> </collection>
</resultMap> </resultMap>
@ -65,11 +70,15 @@
c.mp4_file, c.mp4_file,
c.preview_file, c.preview_file,
c.immediate_file, c.immediate_file,
tag.id as tagId, bodytag.id as bodyTagId,
tag.tag_name as tagName bodytag.tag_name as bodyTagName,
emotag.id as emotionTagId,
emotag.tag_name as emotionTagName
FROM nu_config_service_directive c FROM nu_config_service_directive c
LEFT JOIN nu_directive_tag d ON c.id = d.directive_id LEFT JOIN nu_directive_body_tag dbt ON c.id = dbt.directive_id
LEFT JOIN nu_config_directive_tag tag ON d.tag_id = tag.id LEFT JOIN nu_config_body_tag bodytag ON dbt.tag_id = bodytag.id
LEFT JOIN nu_directive_emotion_tag det ON c.id = det.directive_id
LEFT JOIN nu_config_emotion_tag emotag ON det.tag_id = emotag.id
<where> <where>
c.id IN c.id IN
<foreach collection="ids" item="item" open="(" separator="," close=")"> <foreach collection="ids" item="item" open="(" separator="," close=")">
@ -79,29 +88,56 @@
ORDER BY c.category_id ASC, c.type_id ASC, c.instruction_tag_id ASC,c.create_time desc ORDER BY c.category_id ASC, c.type_id ASC, c.instruction_tag_id ASC,c.create_time desc
</select> </select>
<select id="queryDirectiveIdByTagIds" resultType="com.nu.modules.servicedirective.entity.ConfigServiceDirective"> <select id="queryDirectiveIdByBodyTagIds" resultType="com.nu.modules.servicedirective.entity.ConfigServiceDirective">
SELECT distinct directive_id as id FROM nu_directive_tag WHERE tag_id IN SELECT distinct directive_id as id FROM nu_directive_body_tag WHERE tag_id IN
<foreach collection="tagIds.split(',')" item="tagId" open="(" separator="," close=")"> <foreach collection="tagIds.split(',')" item="tagId" open="(" separator="," close=")">
#{tagId} #{tagId}
</foreach> </foreach>
</select> </select>
<select id="queryCountByTagIds" resultType="java.lang.Integer"> <select id="queryDirectiveIdByEmotionTagIds" resultType="com.nu.modules.servicedirective.entity.ConfigServiceDirective">
SELECT COUNT(*) FROM nu_directive_tag WHERE tag_id IN SELECT distinct directive_id as id FROM nu_directive_emotion_tag WHERE tag_id IN
<foreach collection="tagIds.split(',')" item="tagId" open="(" separator="," close=")">
#{tagId}
</foreach>
</select>
<select id="queryCountByBodyTagIds" resultType="java.lang.Integer">
SELECT COUNT(*) FROM nu_directive_body_tag WHERE tag_id IN
<foreach collection="tagIds" item="item" open="(" separator="," close=")"> <foreach collection="tagIds" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
</select> </select>
<delete id="deleteTags"> <select id="queryCountByEmotionTagIds" resultType="java.lang.Integer">
SELECT COUNT(*) FROM nu_directive_emotion_tag WHERE tag_id IN
<foreach collection="tagIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<delete id="deleteBodyTags">
delete delete
from nu_directive_tag from nu_directive_body_tag
where directive_id = #{directive.id} where directive_id = #{directive.id}
</delete> </delete>
<insert id="saveTags"> <insert id="saveBodyTags">
insert into nu_directive_tag (directive_id,tag_id) values insert into nu_directive_body_tag (directive_id,tag_id) values
<foreach collection="directive.tags.split(',')" item="tagId" separator=","> <foreach collection="directive.bodyTags.split(',')" item="tagId" separator=",">
(#{directive.id}, #{tagId})
</foreach>
</insert>
<delete id="deleteEmotionTags">
delete
from nu_directive_emotion_tag
where directive_id = #{directive.id}
</delete>
<insert id="saveEmotionTags">
insert into nu_directive_emotion_tag (directive_id,tag_id) values
<foreach collection="directive.emotionTags.split(',')" item="tagId" separator=",">
(#{directive.id}, #{tagId}) (#{directive.id}, #{tagId})
</foreach> </foreach>
</insert> </insert>

View File

@ -19,18 +19,32 @@ public interface IConfigServiceDirectiveService extends IService<ConfigServiceDi
List<ConfigServiceDirective> pageList(ConfigServiceDirective configServiceDirective,IPage<ConfigServiceDirective> list); List<ConfigServiceDirective> pageList(ConfigServiceDirective configServiceDirective,IPage<ConfigServiceDirective> list);
/** /**
* 存储指令标签数据 * 存储体型标签数据
* @param configServiceDirective * @param configServiceDirective
*/ */
void saveTags(ConfigServiceDirective configServiceDirective); void saveBodyTags(ConfigServiceDirective configServiceDirective);
/** /**
* 移除改服务指令下指令标签 * 存储情绪标签数据
* @param configServiceDirective * @param configServiceDirective
*/ */
void removeTags(ConfigServiceDirective configServiceDirective); void saveEmotionTags(ConfigServiceDirective configServiceDirective);
List<ConfigServiceDirective> queryDirectiveIdByTagIds(String tags); /**
* 移除改服务指令下体型标签
* @param configServiceDirective
*/
void removeBodyTags(ConfigServiceDirective configServiceDirective);
/**
* 移除改服务指令下情绪标签
* @param configServiceDirective
*/
void removeEmotionTags(ConfigServiceDirective configServiceDirective);
List<ConfigServiceDirective> queryDirectiveIdByBodyTagIds(String tags);
List<ConfigServiceDirective> queryDirectiveIdByEmotionTagIds(String tags);
void removeAll(); void removeAll();

View File

@ -1,12 +1,11 @@
package com.nu.modules.servicedirective.service.impl; package com.nu.modules.servicedirective.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.directivetag.entity.DirectiveTag; import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
import com.nu.modules.servicedirective.entity.ConfigServiceDirective; import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
import com.nu.modules.servicedirective.mapper.ConfigServiceDirectiveMapper; import com.nu.modules.servicedirective.mapper.ConfigServiceDirectiveMapper;
import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService; import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService;
@ -34,8 +33,11 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
//处理服务标签字段 //处理服务标签字段
if (list != null && !list.isEmpty()) { if (list != null && !list.isEmpty()) {
list.stream().forEach(record -> { list.stream().forEach(record -> {
List<DirectiveTag> tagList = record.getTagList(); List<DirectiveBodyTag> bodyTagList = record.getBodyTagList();
record.setTags(tagList.stream().map(DirectiveTag::getId).collect(Collectors.joining(","))); record.setBodyTags(bodyTagList.stream().map(DirectiveBodyTag::getId).collect(Collectors.joining(",")));
List<DirectiveEmotionTag> emotionTagList = record.getEmotionTagList();
record.setEmotionTags(emotionTagList.stream().map(DirectiveEmotionTag::getId).collect(Collectors.joining(",")));
}); });
} }
//处理单元格合并所需数据 //处理单元格合并所需数据
@ -52,101 +54,55 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
public void merge(List<ConfigServiceDirective> records) { public void merge(List<ConfigServiceDirective> records) {
if (records == null || records.isEmpty()) return; if (records == null || records.isEmpty()) return;
int outerStart = 0; // 一级分组起始索引 int outerStart = 0; // 一级分组原三级起始索引
String currentCategoryId = records.get(0).getCategoryId(); String currentInstructionId = records.get(0).getInstructionTagId();
// 一级循环遍历所有记录处理categoryId分组 // 一级循环遍历所有记录处理instructionTagId分组
for (int i = 1; i < records.size(); i++) { for (int i = 1; i < records.size(); i++) {
// 当遇到不同的categoryId时处理当前分组 if (!records.get(i).getInstructionTagId().equals(currentInstructionId)) {
if (!records.get(i).getCategoryId().equals(currentCategoryId)) { processAllGroups(records, outerStart, i - 1); // 处理完整个新一级分组
processAllGroups(records, outerStart, i - 1); // 处理完整个一级分组 outerStart = i;
outerStart = i; // 重置一级起始位置 currentInstructionId = records.get(i).getInstructionTagId();
currentCategoryId = records.get(i).getCategoryId();
} }
} }
processAllGroups(records, outerStart, records.size() - 1); // 处理最后一组 processAllGroups(records, outerStart, records.size() - 1); // 处理最后一组
} }
/**
* 处理完整个一级分组包含二级和三级分组
*
* @param records 记录列表
* @param start 当前分组的起始索引
* @param end 当前分组的结束索引
*/
private void processAllGroups(List<ConfigServiceDirective> records, int start, int end) { private void processAllGroups(List<ConfigServiceDirective> records, int start, int end) {
processOuterGroup(records, start, end); // 处理一级categoryRowSpan processOuterGroup(records, start, end); // 处理新一级instructionRowSpan
int innerStart = start; // 二级分组起始索引 int middleStart = start; // 新二级分组起始索引
String currentCategoryId = records.get(middleStart).getCategoryId();
// 新二级循环处理当前新一级分组内的categoryId分组
for (int j = middleStart + 1; j <= end; j++) {
if (!records.get(j).getCategoryId().equals(currentCategoryId)) {
processMiddleGroup(records, middleStart, j - 1); // 处理完整个新二级分组
middleStart = j;
currentCategoryId = records.get(j).getCategoryId();
}
}
processMiddleGroup(records, middleStart, end); // 处理最后一组新二级数据
}
private void processMiddleGroup(List<ConfigServiceDirective> records, int start, int end) {
processTypeRowSpan(records, start, end); // 设置新二级categoryRowSpan
int innerStart = start; // 新三级分组起始索引
String currentTypeId = records.get(innerStart).getTypeId(); String currentTypeId = records.get(innerStart).getTypeId();
// 二级循环处理当前一级分组内的typeId分组 // 新三级循环处理当前新二级分组内的typeId分组
for (int j = innerStart + 1; j <= end; j++) { for (int k = innerStart + 1; k <= end; k++) {
if (!records.get(j).getTypeId().equals(currentTypeId)) { if (!records.get(k).getTypeId().equals(currentTypeId)) {
processMiddleGroup(records, innerStart, j - 1); // 处理完整个二级分组 processInnerGroup(records, innerStart, k - 1); // 处理完整个新三级分组
innerStart = j; innerStart = k;
currentTypeId = records.get(j).getTypeId(); currentTypeId = records.get(k).getTypeId();
} }
} }
processMiddleGroup(records, innerStart, end); // 处理最后一组二级数据 processInnerGroup(records, innerStart, end); // 处理最后一组新三级数据
} }
/**
* 处理二级typeId分组包含三级instructionTagId分组
*
* @param records 记录列表
* @param start 当前分组的起始索引
* @param end 当前分组的结束索引
*/
private void processMiddleGroup(List<ConfigServiceDirective> records, int start, int end) {
processTypeRowSpan(records, start, end); // 设置二级typeRowSpan
int instructionStart = start; // 三级分组起始索引
String currentInstructionId = records.get(instructionStart).getInstructionTagId();
// 三级循环处理当前二级分组内的instructionTagId分组
for (int k = instructionStart + 1; k <= end; k++) {
if (!records.get(k).getInstructionTagId().equals(currentInstructionId)) {
processInnerGroup(records, instructionStart, k - 1); // 处理完整个三级分组
instructionStart = k;
currentInstructionId = records.get(k).getInstructionTagId();
}
}
processInnerGroup(records, instructionStart, end); // 处理最后一组三级数据
}
/**
* 处理三级instructionTagId分组
*
* @param records 记录列表
* @param start 当前分组的起始索引
* @param end 当前分组的结束索引
*/
private void processInnerGroup(List<ConfigServiceDirective> records, int start, int end) { private void processInnerGroup(List<ConfigServiceDirective> records, int start, int end) {
int count = end - start + 1;
if (count > 1) {
records.get(start).setInstructionRowSpan(count);
// 将后续记录的instructionRowSpan置0
for (int i = start + 1; i <= end; i++) {
records.get(i).setInstructionRowSpan(0);
}
}
}
// 处理一级categoryRowSpan与之前保持一致
private void processOuterGroup(List<ConfigServiceDirective> records, int start, int end) {
int count = end - start + 1;
if (count > 1) {
records.get(start).setCategoryRowSpan(count);
for (int i = start + 1; i <= end; i++) {
records.get(i).setCategoryRowSpan(0);
}
}
}
// 处理二级typeRowSpan与之前保持一致
private void processTypeRowSpan(List<ConfigServiceDirective> records, int start, int end) {
int count = end - start + 1; int count = end - start + 1;
if (count > 1) { if (count > 1) {
records.get(start).setTypeRowSpan(count); records.get(start).setTypeRowSpan(count);
@ -156,30 +112,78 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
} }
} }
// 处理新一级instructionRowSpan
private void processOuterGroup(List<ConfigServiceDirective> records, int start, int end) {
int count = end - start + 1;
if (count > 1) {
records.get(start).setInstructionRowSpan(count);
for (int i = start + 1; i <= end; i++) {
records.get(i).setInstructionRowSpan(0);
}
}
}
// 处理新二级categoryRowSpan
private void processTypeRowSpan(List<ConfigServiceDirective> records, int start, int end) {
int count = end - start + 1;
if (count > 1) {
records.get(start).setCategoryRowSpan(count);
for (int i = start + 1; i <= end; i++) {
records.get(i).setCategoryRowSpan(0);
}
}
}
/** /**
* 存储指令标签数据 * 存储体型标签数据
* *
* @param configServiceDirective * @param configServiceDirective
*/ */
@Override @Override
public void saveTags(ConfigServiceDirective configServiceDirective) { public void saveBodyTags(ConfigServiceDirective configServiceDirective) {
baseMapper.deleteTags(configServiceDirective); baseMapper.deleteBodyTags(configServiceDirective);
baseMapper.saveTags(configServiceDirective); baseMapper.saveBodyTags(configServiceDirective);
} }
/** /**
* 移除改服务指令下指令标签 * 存储情绪标签数据
* *
* @param configServiceDirective * @param configServiceDirective
*/ */
@Override @Override
public void removeTags(ConfigServiceDirective configServiceDirective) { public void saveEmotionTags(ConfigServiceDirective configServiceDirective) {
baseMapper.deleteTags(configServiceDirective); baseMapper.deleteEmotionTags(configServiceDirective);
baseMapper.saveEmotionTags(configServiceDirective);
}
/**
* 移除改服务指令下体型标签
*
* @param configServiceDirective
*/
@Override
public void removeBodyTags(ConfigServiceDirective configServiceDirective) {
baseMapper.deleteBodyTags(configServiceDirective);
}
/**
* 移除改服务指令下情绪标签
*
* @param configServiceDirective
*/
@Override
public void removeEmotionTags(ConfigServiceDirective configServiceDirective) {
baseMapper.deleteEmotionTags(configServiceDirective);
} }
@Override @Override
public List<ConfigServiceDirective> queryDirectiveIdByTagIds(String tags) { public List<ConfigServiceDirective> queryDirectiveIdByBodyTagIds(String tags) {
return baseMapper.queryDirectiveIdByTagIds(tags); return baseMapper.queryDirectiveIdByBodyTagIds(tags);
}
@Override
public List<ConfigServiceDirective> queryDirectiveIdByEmotionTagIds(String tags) {
return baseMapper.queryDirectiveIdByEmotionTagIds(tags);
} }
@Override @Override

View File

@ -42,18 +42,31 @@
<result property="typeName" column="cst_type_name"/> <result property="typeName" column="cst_type_name"/>
<result property="previewFile" column="preview_file"/> <result property="previewFile" column="preview_file"/>
<result property="immediateFile" column="immediate_file"/> <result property="immediateFile" column="immediate_file"/>
<!-- 关联的标签列表 --> <!-- 关联的体型标签列表 -->
<collection property="tagList" ofType="com.nu.modules.directivetag.entity.DirectiveTag"> <collection property="bodyTagList" ofType="com.nu.modules.directivetag.body.entity.DirectiveBodyTag">
<id property="id" column="tag_id"/> <id property="id" column="bodytag_id"/>
<result property="tagName" column="cdt_tag_name"/> <result property="tagName" column="bodytag_name"/>
<result property="sort" column="tag_sort"/> <result property="sort" column="bodytag_sort"/>
<result property="izEnabled" column="tag_iz_enabled"/> <result property="izEnabled" column="bodytag_iz_enabled"/>
<result property="delFlag" column="tag_del_flag"/> <result property="delFlag" column="bodytag_del_flag"/>
<result property="createBy" column="tag_create_by"/> <result property="createBy" column="bodytag_create_by"/>
<result property="createTime" column="tag_create_time"/> <result property="createTime" column="bodytag_create_time"/>
<result property="updateBy" column="tag_update_by"/> <result property="updateBy" column="bodytag_update_by"/>
<result property="updateTime" column="tag_update_time"/> <result property="updateTime" column="bodytag_update_time"/>
<result property="sysOrgCode" column="tag_sys_org_code"/> <result property="sysOrgCode" column="bodytag_sys_org_code"/>
</collection>
<!-- 关联的情绪标签列表 -->
<collection property="emotionTagList" ofType="com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag">
<id property="id" column="emotag_id"/>
<result property="tagName" column="emotag_name"/>
<result property="sort" column="emotag_sort"/>
<result property="izEnabled" column="emotag_iz_enabled"/>
<result property="delFlag" column="emotag_del_flag"/>
<result property="createBy" column="emotag_create_by"/>
<result property="createTime" column="emotag_create_time"/>
<result property="updateBy" column="emotag_update_by"/>
<result property="updateTime" column="emotag_update_time"/>
<result property="sysOrgCode" column="emotag_sys_org_code"/>
</collection> </collection>
</collection> </collection>
</resultMap> </resultMap>
@ -95,16 +108,26 @@
csd.mp4_file, csd.mp4_file,
csd.preview_file, csd.preview_file,
csd.immediate_file, csd.immediate_file,
cdt.id AS tag_id, cdbt.id AS bodytag_id,
cdt.tag_name as cdt_tag_name, cdbt.tag_name as bodytag_name,
cdt.sort AS tag_sort, cdbt.sort AS bodytag_sort,
cdt.iz_enabled AS tag_iz_enabled, cdbt.iz_enabled AS bodytag_iz_enabled,
cdt.del_flag AS tag_del_flag, cdbt.del_flag AS bodytag_del_flag,
cdt.create_by AS tag_create_by, cdbt.create_by AS bodytag_create_by,
cdt.create_time AS tag_create_time, cdbt.create_time AS bodytag_create_time,
cdt.update_by AS tag_update_by, cdbt.update_by AS bodytag_update_by,
cdt.update_time AS tag_update_time, cdbt.update_time AS bodytag_update_time,
cdt.sys_org_code AS tag_sys_org_code, cdbt.sys_org_code AS bodytag_sys_org_code,
cdet.id AS emotag_id,
cdet.tag_name as emotag_name,
cdet.sort AS emotag_sort,
cdet.iz_enabled AS emotag_iz_enabled,
cdet.del_flag AS emotag_del_flag,
cdet.create_by AS emotag_create_by,
cdet.create_time AS emotag_create_time,
cdet.update_by AS emotag_update_by,
cdet.update_time AS emotag_update_time,
cdet.sys_org_code AS emotag_sys_org_code,
csc.category_name AS csc_category_name, csc.category_name AS csc_category_name,
cst.type_name AS cst_type_name cst.type_name AS cst_type_name
FROM FROM
@ -118,8 +141,10 @@
) dp ) dp
LEFT JOIN nu_servtag_directive sd ON dp.id = sd.tag_id LEFT JOIN nu_servtag_directive sd ON dp.id = sd.tag_id
LEFT JOIN nu_config_service_directive csd ON sd.directive_id = csd.id LEFT JOIN nu_config_service_directive csd ON sd.directive_id = csd.id
LEFT JOIN nu_directive_tag dt ON csd.id = dt.directive_id LEFT JOIN nu_directive_body_tag dbt ON csd.id = dbt.directive_id
LEFT JOIN nu_config_directive_tag cdt ON dt.tag_id = cdt.id LEFT JOIN nu_config_body_tag cdbt ON dbt.tag_id = cdbt.id
LEFT JOIN nu_directive_emotion_tag det ON csd.id = det.directive_id
LEFT JOIN nu_config_emotion_tag cdet ON det.tag_id = cdet.id
LEFT JOIN nu_config_service_category csc ON csd.category_id = csc.id LEFT JOIN nu_config_service_category csc ON csd.category_id = csc.id
LEFT JOIN nu_config_service_type cst ON csd.type_id = cst.id LEFT JOIN nu_config_service_type cst ON csd.type_id = cst.id
order by dp.create_time desc order by dp.create_time desc

View File

@ -1,18 +1,17 @@
package com.nu.modules.servicetag.service.impl; package com.nu.modules.servicetag.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.nu.modules.directivetag.entity.DirectiveTag; import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
import com.nu.modules.servicedirective.entity.ConfigServiceDirective; import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
import com.nu.modules.servicetag.entity.ServiceTag; import com.nu.modules.servicetag.entity.ServiceTag;
import com.nu.modules.servicetag.mapper.ServiceTagMapper; import com.nu.modules.servicetag.mapper.ServiceTagMapper;
import com.nu.modules.servicetag.service.IServiceTagService; import com.nu.modules.servicetag.service.IServiceTagService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -40,9 +39,13 @@ public class ServiceTagServiceImpl extends ServiceImpl<ServiceTagMapper, Service
if(l.getDirectives()!=null && !l.getDirectives().isEmpty()){ if(l.getDirectives()!=null && !l.getDirectives().isEmpty()){
List<ConfigServiceDirective> sd = l.getDirectives(); List<ConfigServiceDirective> sd = l.getDirectives();
for (int i = 0; i < sd.size(); i++) { for (int i = 0; i < sd.size(); i++) {
List<DirectiveTag> tagList = sd.get(i).getTagList(); List<DirectiveBodyTag> bodyTagList = sd.get(i).getBodyTagList();
List<String> tags = tagList.stream().map(t -> t.getTagName()).collect(Collectors.toList()); List<String> bodyTags = bodyTagList.stream().map(t -> t.getTagName()).collect(Collectors.toList());
sd.get(i).setTagsName(String.join(",",tags)); sd.get(i).setBodyTagsName(String.join(",",bodyTags));
List<DirectiveEmotionTag> emoTagList = sd.get(i).getEmotionTagList();
List<String> emoTags = emoTagList.stream().map(t -> t.getTagName()).collect(Collectors.toList());
sd.get(i).setEmotionTagsName(String.join(",",emoTags));
} }
} }
}); });

View File

@ -5,13 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.nu.dto.DirectiveMQDto; import com.nu.dto.DirectiveMQDto;
import com.nu.dto.StatusMQDto; import com.nu.dto.StatusMQDto;
import com.nu.enums.MQStatus; import com.nu.enums.MQStatus;
import com.nu.modules.directivetag.entity.DirectiveTagRelation; import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTagRelation;
import com.nu.modules.directivetag.service.IDirectiveTagService; import com.nu.modules.directivetag.emotion.service.IDirectiveEmotionTagService;
import com.nu.modules.servicedirective.entity.ConfigServiceDirective; import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService; import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService;
import com.nu.utils.RabbitMQUtil; import com.nu.utils.RabbitMQUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -26,7 +25,7 @@ public class DirectiveMQListener {
@Autowired @Autowired
private IConfigServiceDirectiveService directiveService; private IConfigServiceDirectiveService directiveService;
@Autowired @Autowired
private IDirectiveTagService tagService; private IDirectiveEmotionTagService tagService;
@Autowired @Autowired
private RabbitMQUtil rabbitMQUtil; private RabbitMQUtil rabbitMQUtil;
@ -79,7 +78,7 @@ public class DirectiveMQListener {
} }
//查询指令标签关系 并将指令标签关系表数据增加进自己的库表中 //查询指令标签关系 并将指令标签关系表数据增加进自己的库表中
if (dto.getIdList() != null && !dto.getIdList().isEmpty()) { if (dto.getIdList() != null && !dto.getIdList().isEmpty()) {
List<DirectiveTagRelation> relations = tagService.selectAllRelation("nuro", dto.getIdList()); List<DirectiveEmotionTagRelation> relations = tagService.selectAllRelation("nuro", dto.getIdList());
if (relations != null && !relations.isEmpty()) { if (relations != null && !relations.isEmpty()) {
tagService.insertAllRelation(relations); tagService.insertAllRelation(relations);
} }