| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503 |
- package jnpf.message.service.impl;
- import jnpf.base.service.SuperServiceImpl;
- import jnpf.base.ActionResult;
- import jnpf.constant.JnpfConst;
- import jnpf.constant.MsgCode;
- import jnpf.database.model.superQuery.ConditionJsonModel;
- import jnpf.database.model.superQuery.SuperQueryConditionModel;
- import jnpf.exception.DataException;
- import jnpf.message.entity.MessageTemplateConfigEntity;
- import jnpf.message.entity.SmsFieldEntity;
- import jnpf.message.entity.TemplateParamEntity;
- import jnpf.message.mapper.MessageTemplateConfigMapper;
- import jnpf.message.model.messagetemplateconfig.MessageTemplateConfigForm;
- import jnpf.message.model.messagetemplateconfig.MessageTemplateConfigPagination;
- import jnpf.message.model.messagetemplateconfig.TemplateParamModel;
- import jnpf.message.service.MessageTemplateConfigService;
- import jnpf.message.service.SmsFieldService;
- import jnpf.message.service.TemplateParamService;
- import cn.hutool.core.util.ObjectUtil;
- import jnpf.permission.service.AuthorizeService;
- import java.lang.reflect.Field;
- import com.baomidou.mybatisplus.annotation.TableField;
- import jnpf.util.DateUtil;
- import jnpf.util.JsonUtil;
- import jnpf.util.StringUtil;
- import jnpf.util.UserProvider;
- import jnpf.util.visiual.JnpfKeyConsts;
- import org.springframework.stereotype.Service;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import org.springframework.beans.factory.annotation.Autowired;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- /**
- * 消息模板(新)
- * 版本: V3.2.0
- * 版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
- * 作者: JNPF开发平台组
- * 日期: 2022-08-18
- */
- @Service
- public class MessageTemplateConfigServiceImpl extends SuperServiceImpl<MessageTemplateConfigMapper, MessageTemplateConfigEntity> implements MessageTemplateConfigService {
- @Autowired
- private TemplateParamService templateParamService;
- @Autowired
- private SmsFieldService smsFieldService;
- @Override
- public List<MessageTemplateConfigEntity> getList(MessageTemplateConfigPagination MessageTemplateConfigPagination) {
- return getTypeList(MessageTemplateConfigPagination, MessageTemplateConfigPagination.getDataType());
- }
- @Override
- public List<MessageTemplateConfigEntity> getTypeList(MessageTemplateConfigPagination MessageTemplateConfigPagination, String dataType) {
- String userId = UserProvider.getUser().getUserId();
- int total = 0;
- int messageTemplateNewNum = 0;
- QueryWrapper<MessageTemplateConfigEntity> messageTemplateNewQueryWrapper = new QueryWrapper<>();
- int templateParamNum = 0;
- QueryWrapper<TemplateParamEntity> templateParamQueryWrapper = new QueryWrapper<>();
- int smsFieldNum = 0;
- QueryWrapper<SmsFieldEntity> smsFieldQueryWrapper = new QueryWrapper<>();
- //关键字
- if (ObjectUtil.isNotEmpty(MessageTemplateConfigPagination.getKeyword())) {
- messageTemplateNewNum++;
- messageTemplateNewQueryWrapper.lambda().and(t -> t.like(MessageTemplateConfigEntity::getEnCode, MessageTemplateConfigPagination.getKeyword()).
- or().like(MessageTemplateConfigEntity::getFullName, MessageTemplateConfigPagination.getKeyword()));
- }
- //模板类型
- if (ObjectUtil.isNotEmpty(MessageTemplateConfigPagination.getTemplateType())) {
- messageTemplateNewNum++;
- messageTemplateNewQueryWrapper.lambda().eq(MessageTemplateConfigEntity::getTemplateType, MessageTemplateConfigPagination.getTemplateType());
- }
- //消息类型
- if (ObjectUtil.isNotEmpty(MessageTemplateConfigPagination.getMessageType())) {
- messageTemplateNewNum++;
- messageTemplateNewQueryWrapper.lambda().eq(MessageTemplateConfigEntity::getMessageType, MessageTemplateConfigPagination.getMessageType());
- }
- //消息来源
- if (ObjectUtil.isNotEmpty(MessageTemplateConfigPagination.getMessageSource())) {
- messageTemplateNewNum++;
- messageTemplateNewQueryWrapper.lambda().eq(MessageTemplateConfigEntity::getMessageSource, MessageTemplateConfigPagination.getMessageSource());
- }
- //状态
- if (ObjectUtil.isNotEmpty(MessageTemplateConfigPagination.getEnabledMark())) {
- messageTemplateNewNum++;
- int enabledMark = Integer.parseInt(MessageTemplateConfigPagination.getEnabledMark());
- messageTemplateNewQueryWrapper.lambda().eq(MessageTemplateConfigEntity::getEnabledMark, enabledMark);
- }
- //排序
- if (StringUtil.isEmpty(MessageTemplateConfigPagination.getSidx())) {
- messageTemplateNewQueryWrapper.lambda().orderByAsc(MessageTemplateConfigEntity::getSortCode).orderByDesc(MessageTemplateConfigEntity::getCreatorTime).orderByDesc(MessageTemplateConfigEntity::getLastModifyTime);
- } else {
- try {
- String sidx = MessageTemplateConfigPagination.getSidx();
- MessageTemplateConfigEntity MessageTemplateConfigEntity = new MessageTemplateConfigEntity();
- Field declaredField = MessageTemplateConfigEntity.getClass().getDeclaredField(sidx);
- declaredField.setAccessible(true);
- String value = declaredField.getAnnotation(TableField.class).value();
- messageTemplateNewQueryWrapper = "asc".equals(MessageTemplateConfigPagination.getSort().toLowerCase()) ? messageTemplateNewQueryWrapper.orderByAsc(value) : messageTemplateNewQueryWrapper.orderByDesc(value);
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- }
- }
- if (!"1".equals(dataType)) {
- if (total > 0|| total == 0) {
- Page<MessageTemplateConfigEntity> page = new Page<>(MessageTemplateConfigPagination.getCurrentPage(), MessageTemplateConfigPagination.getPageSize());
- IPage<MessageTemplateConfigEntity> userIPage = this.page(page, messageTemplateNewQueryWrapper);
- return MessageTemplateConfigPagination.setData(userIPage.getRecords(), userIPage.getTotal());
- } else {
- List<MessageTemplateConfigEntity> list = new ArrayList();
- return MessageTemplateConfigPagination.setData(list, list.size());
- }
- } else {
- return this.list(messageTemplateNewQueryWrapper);
- }
- }
- @Override
- public MessageTemplateConfigEntity getInfo(String id) {
- QueryWrapper<MessageTemplateConfigEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(MessageTemplateConfigEntity::getId, id);
- return this.getOne(queryWrapper);
- }
- @Override
- public MessageTemplateConfigEntity getInfoByEnCode(String enCode,String messageType) {
- QueryWrapper<MessageTemplateConfigEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(MessageTemplateConfigEntity::getEnCode, enCode);
- queryWrapper.lambda().eq(MessageTemplateConfigEntity::getMessageType, messageType);
- return this.getOne(queryWrapper);
- }
- @Override
- public void create(MessageTemplateConfigEntity entity) {
- this.save(entity);
- }
- @Override
- public boolean update(String id, MessageTemplateConfigEntity entity) {
- entity.setId(id);
- return this.updateById(entity);
- }
- @Override
- public void delete(MessageTemplateConfigEntity entity) {
- if (entity != null) {
- this.removeById(entity.getId());
- }
- }
- //子表方法
- @Override
- public List<TemplateParamEntity> getTemplateParamList(String id, MessageTemplateConfigPagination MessageTemplateConfigPagination) {
- QueryWrapper<TemplateParamEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(TemplateParamEntity::getTemplateId, id);
- return templateParamService.list(templateParamService.getChild(MessageTemplateConfigPagination, queryWrapper));
- }
- @Override
- public List<TemplateParamEntity> getTemplateParamList(String id) {
- QueryWrapper<TemplateParamEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(TemplateParamEntity::getTemplateId, id);
- return templateParamService.list(queryWrapper);
- }
- @Override
- public List<SmsFieldEntity> getSmsFieldList(String id, MessageTemplateConfigPagination MessageTemplateConfigPagination) {
- QueryWrapper<SmsFieldEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(SmsFieldEntity::getTemplateId, id);
- return smsFieldService.list(smsFieldService.getChild(MessageTemplateConfigPagination, queryWrapper));
- }
- @Override
- public List<SmsFieldEntity> getSmsFieldList(String id) {
- QueryWrapper<SmsFieldEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(SmsFieldEntity::getTemplateId, id);
- return smsFieldService.list(queryWrapper);
- }
- //验证表单唯一字段
- @Override
- public boolean checkForm(MessageTemplateConfigForm form, int i,String id) {
- int total = 0;
- if (ObjectUtil.isNotEmpty(form.getEnCode())) {
- QueryWrapper<MessageTemplateConfigEntity> codeWrapper = new QueryWrapper<>();
- codeWrapper.lambda().eq(MessageTemplateConfigEntity::getEnCode, form.getEnCode());
- if(StringUtil.isNotBlank(id) && !"null".equals(id)) {
- codeWrapper.lambda().ne(MessageTemplateConfigEntity::getId, id);
- }
- if ((int) this.count(codeWrapper) > i) {
- total++;
- }
- }
- if (form.getTemplateParamList() != null) {
- }
- if (form.getSmsFieldList() != null) {
- }
- if (total > 0) {
- return true;
- }
- return false;
- }
- @Override
- public boolean isExistByFullName(String fullName, String id) {
- QueryWrapper<MessageTemplateConfigEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(MessageTemplateConfigEntity::getFullName, fullName);
- if (!StringUtil.isEmpty(id)) {
- queryWrapper.lambda().ne(MessageTemplateConfigEntity::getId, id);
- }
- return this.count(queryWrapper) > 0 ? true : false;
- }
- @Override
- public boolean isExistByEnCode(String enCode, String id) {
- QueryWrapper<MessageTemplateConfigEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(MessageTemplateConfigEntity::getEnCode, enCode);
- if (!StringUtil.isEmpty(id)) {
- queryWrapper.lambda().ne(MessageTemplateConfigEntity::getId, id);
- }
- return this.count(queryWrapper) > 0 ? true : false;
- }
- @Override
- public ActionResult ImportData(MessageTemplateConfigEntity entity) throws DataException {
- if (entity != null) {
- // if (isExistByFullName(entity.getFullName(), null)) {
- // return ActionResult.fail(MsgCode.EXIST001.get());
- // }
- if (isExistByEnCode(entity.getEnCode(), entity.getId())) {
- return ActionResult.fail(MsgCode.EXIST002.get());
- }
- try {
- this.save(entity);
- } catch (Exception e) {
- throw new DataException(MsgCode.IMP003.get());
- }
- return ActionResult.success(MsgCode.IMP001.get());
- }
- return ActionResult.fail(MsgCode.IMP006.get());
- }
- @Override
- public List<TemplateParamModel> getParamJson(String id) {
- MessageTemplateConfigEntity entity = getInfo(id);
- List<TemplateParamModel> paramModelList = new ArrayList<>();
- List<String> smsField = new ArrayList<>();
- List<String> paramList = new ArrayList<>();
- if (entity != null) {
- if ("3".equals(entity.getMessageType()) || "7".equals(entity.getMessageType())) {
- List<SmsFieldEntity> smsFieldList = smsFieldService.getDetailListByParentId(id);
- for (SmsFieldEntity entity1 : smsFieldList) {
- if(!"@flowLink".equals(entity1.getField())) {
- smsField.add(entity1.getField());
- }
- }
- List<TemplateParamEntity> paramFieldList = templateParamService.getDetailListByParentId(id);
- for (TemplateParamEntity entity1 : paramFieldList) {
- if (smsField.contains(entity1.getField())) {
- TemplateParamModel paramModel = new TemplateParamModel();
- paramModel.setTemplateId(entity.getId());
- paramModel.setTemplateCode(entity.getEnCode());
- paramModel.setTemplateType(entity.getTemplateType());
- paramModel.setField(entity1.getField());
- paramModel.setFieldName(entity1.getFieldName());
- paramModel.setId(entity1.getId());
- paramModel.setTemplateName(entity.getFullName());
- paramModelList.add(paramModel);
- }
- }
- } else {
- String content = StringUtil.isNotEmpty(entity.getContent()) ? entity.getContent() : "";
- String title = StringUtil.isNotEmpty(entity.getTitle()) ? entity.getTitle() : "";
- Set<String> list = new HashSet<>();
- list.addAll(regexContent(content));
- list.addAll(regexContent(title));
- List<TemplateParamEntity> paramFieldList = templateParamService.getDetailListByParentId(id);
- for (TemplateParamEntity entity1 : paramFieldList) {
- TemplateParamModel paramModel = new TemplateParamModel();
- paramModel.setTemplateId(entity.getId());
- paramModel.setTemplateCode(entity.getEnCode());
- paramModel.setTemplateType(entity.getTemplateType());
- paramModel.setField(entity1.getField());
- paramModel.setFieldName(entity1.getFieldName());
- paramModel.setId(entity1.getId());
- paramModel.setTemplateName(entity.getFullName());
- if(list.contains(entity1.getField())){
- if (!"@FlowLink".equals(entity1.getField())
- && !"@CreatorUserName".equals(entity1.getField())
- && !"@SendTime".equals(entity1.getField())
- && !"@Mandator".equals(entity1.getField())
- && !"@Mandatary".equals(entity1.getField())
- ) {
- paramModelList.add(paramModel);
- }
- }
- }
- }
- }
- //将参数模板转为json格式数据
- // String data = JsonUtil.getObjectToString(paramModelList);
- return paramModelList;
- }
- //获取消息内容参数
- public List<String> regexContent(String content) {
- List<String> list = new ArrayList<>();
- String pattern = "[{]([^}]+)[}]";
- Pattern patternList = Pattern.compile(pattern);
- Matcher m = patternList.matcher(content);
- while (m.find()) {
- String group = m.group().replaceAll("\\{", "").replaceAll("}", "");
- list.add(group);
- }
- return list;
- }
- /**
- * 高级查询
- *
- * @param conditionModel
- * @param entity
- * @param num
- * @return
- */
- public Integer getCondition(SuperQueryConditionModel conditionModel, Object entity, int num) {
- QueryWrapper<?> queryWrapper = conditionModel.getObj();
- List<ConditionJsonModel> queryConditionModels = conditionModel.getConditionList();
- String op = conditionModel.getMatchLogic();
- String tableName = conditionModel.getTableName();
- List<ConditionJsonModel> useCondition = new ArrayList<>();
- for (ConditionJsonModel queryConditionModel : queryConditionModels) {
- if (queryConditionModel.getTableName().equalsIgnoreCase(tableName)) {
- if (queryConditionModel.getField().contains("jnpf")) {
- String child = queryConditionModel.getField();
- String s1 = child.substring(child.lastIndexOf(JnpfConst.SIDE_MARK_PRE)).replace(JnpfConst.SIDE_MARK_PRE, "");
- queryConditionModel.setField(s1);
- }
- if (queryConditionModel.getField().toLowerCase().startsWith(JnpfKeyConsts.CHILD_TABLE_PREFIX)) {
- String child = queryConditionModel.getField();
- String s1 = child.substring(child.indexOf("-") + 1);
- queryConditionModel.setField(s1);
- }
- useCondition.add(queryConditionModel);
- }
- }
- if (queryConditionModels.size() < 1 || useCondition.size() < 1) {
- return num;
- }
- if (useCondition.size() > 0) {
- num += 1;
- }
- //处理控件 转换为有效值
- for (ConditionJsonModel queryConditionModel : useCondition) {
- String jnpfKey = queryConditionModel.getJnpfKey();
- String fieldValue = queryConditionModel.getFieldValue();
- if (jnpfKey.equals(JnpfKeyConsts.DATE)) {
- Long o1 = Long.valueOf(fieldValue);
- String startTime = DateUtil.daFormat(o1);
- queryConditionModel.setFieldValue(startTime);
- } else if (jnpfKey.equals(JnpfKeyConsts.CREATETIME) || jnpfKey.equals(JnpfKeyConsts.MODIFYTIME)) {
- Long o1 = Long.valueOf(fieldValue);
- String startTime = DateUtil.daFormatHHMMSS(o1);
- queryConditionModel.setFieldValue(startTime);
- } else if (jnpfKey.equals(JnpfKeyConsts.CURRORGANIZE)) {
- List<String> orgList = JsonUtil.getJsonToList(fieldValue, String.class);
- queryConditionModel.setFieldValue(orgList.get(orgList.size() - 1));
- }
- }
- //反射获取数据库实际字段
- Class<?> aClass = entity.getClass();
- queryWrapper.and(tw -> {
- for (ConditionJsonModel conditionJsonModel : useCondition) {
- String conditionField = conditionJsonModel.getField();
- Field declaredField = null;
- try {
- declaredField = aClass.getDeclaredField(conditionField);
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- }
- declaredField.setAccessible(true);
- String field = declaredField.getAnnotation(TableField.class).value();
- String fieldValue = conditionJsonModel.getFieldValue();
- String symbol = conditionJsonModel.getSymbol();
- if ("AND".equalsIgnoreCase(op)) {
- if (symbol.equals("==")) {
- tw.eq(field, fieldValue);
- } else if (symbol.equals(">=")) {
- tw.ge(field, fieldValue);
- } else if (symbol.equals("<=")) {
- tw.le(field, fieldValue);
- tw.and(
- qw -> qw.ne(field, "")
- );
- } else if (symbol.equals(">")) {
- tw.gt(field, fieldValue);
- } else if (symbol.equals("<")) {
- tw.lt(field, fieldValue);
- tw.and(
- qw -> qw.ne(field, "")
- );
- } else if (symbol.equals("<>")) {
- tw.ne(field, fieldValue);
- if (StringUtil.isNotEmpty(fieldValue)) {
- tw.or(
- qw -> qw.isNull(field)
- );
- }
- } else if (symbol.equals("like")) {
- if (StringUtil.isNotEmpty(fieldValue)) {
- tw.like(field, fieldValue);
- } else {
- tw.isNull(field);
- }
- } else if (symbol.equals("notLike")) {
- if (StringUtil.isNotEmpty(fieldValue)) {
- tw.notLike(field, fieldValue);
- tw.or(
- qw -> qw.isNull(field)
- );
- } else {
- tw.isNotNull(field);
- }
- }
- } else {
- if (symbol.equals("==")) {
- tw.or(
- qw -> qw.eq(field, fieldValue)
- );
- } else if (symbol.equals(">=")) {
- tw.or(
- qw -> qw.ge(field, fieldValue)
- );
- } else if (symbol.equals("<=")) {
- tw.or(
- qw -> qw.le(field, fieldValue)
- );
- } else if (symbol.equals(">")) {
- tw.or(
- qw -> qw.gt(field, fieldValue)
- );
- } else if (symbol.equals("<")) {
- tw.or(
- qw -> qw.lt(field, fieldValue)
- );
- } else if (symbol.equals("<>")) {
- tw.or(
- qw -> qw.ne(field, fieldValue)
- );
- if (StringUtil.isNotEmpty(fieldValue)) {
- tw.or(
- qw -> qw.isNull(field)
- );
- }
- } else if (symbol.equals("like")) {
- if (StringUtil.isNotEmpty(fieldValue)) {
- tw.or(
- qw -> qw.like(field, fieldValue)
- );
- } else {
- tw.or(
- qw -> qw.isNull(field)
- );
- }
- } else if (symbol.equals("notLike")) {
- if (StringUtil.isNotEmpty(fieldValue)) {
- tw.or(
- qw -> qw.notLike(field, fieldValue)
- );
- tw.or(
- qw -> qw.isNull(field)
- );
- } else {
- tw.or(
- qw -> qw.isNotNull(field)
- );
- }
- }
- }
- }
- });
- return num;
- }
- }
|