Commit 3db0491f authored by ZWT's avatar ZWT

feat(零碳): 长庆演示系统新增功能

1.修改第三方日累计数据推送表表结构,增加日累计储能放电量字段,同时修改代码对应实体及mapper文件,修改相关接口增加储能日累计放电量接收逻辑;
2.修改首页井场收益分析模块接口,修改获取储能累计放电量逻辑;
3.设计并创建井口日用电趋势表,生成对应实体类及mapper文件;
4.统计分析模块,新增本月累计节电经济效益查询接口,添加线上接口文档并完成接口冒烟测试;
5.统计分析模块,新增本月累计减碳量查询接口,添加线上接口文档并完成接口冒烟测试;
6.统计分析模块,新增光伏发电趋势查询接口,添加线上接口文档并完成接口冒烟测试;
7.统计分析模块,新增月度总览查询接口,添加线上接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent e68e9fcd
package pps.core.common.config;
import pps.core.common.utils.TimeSpanChecker;
import xstartup.annotation.XConfig;
import xstartup.base.XContext;
import xstartup.config.XBooleanConfigItem;
import xstartup.config.XConfigMetadata;
@XConfig
public class AnalysisTransferConfig {
public static final XBooleanConfigItem useMq2AnalysisConfig = XConfigMetadata.register(TraceLogConfig.class,
"useMq2Analysis",
XBooleanConfigItem.class);
/**
* 是否使用微服务调用
*/
private static boolean useMq2Analysis = true;
private static TimeSpanChecker checker = new TimeSpanChecker(60, false);
public static boolean checkUseMq2AnalysisConfig(XContext context) {
// 使用mq发送消息
return true;
// try {
// if (checker.checkNow() && useMq2AnalysisConfig != null) {
// useMq2Analysis = useMq2AnalysisConfig.getValueNotNull(context);
// }
// return useMq2Analysis;
// } catch (Exception e) {
// return false;
// }
}
}
package pps.core.common.config;
import pps.core.common.utils.TimeSpanChecker;
import xstartup.annotation.XConfig;
import xstartup.base.XContext;
import xstartup.config.XBooleanConfigItem;
import xstartup.config.XConfigMetadata;
@XConfig
public class ExceptionDebugConfig {
public static final XBooleanConfigItem dontShowExceptionDebugConfig = XConfigMetadata.register(TraceLogConfig.class,
"dontShowExceptionDebug",
XBooleanConfigItem.class);
/**
* 不显示诊断信息
*/
private static boolean dontShowExceptionDebug = false;
private static TimeSpanChecker checker = new TimeSpanChecker(60, false);
public static boolean checkDontShowExceptionDebug(XContext context) {
if (checker.checkNow()) {
dontShowExceptionDebug = dontShowExceptionDebugConfig.getValueNotNull(context);
}
return dontShowExceptionDebug;
}
}
package pps.core.common.config;
import xstartup.annotation.XConfig;
import xstartup.config.XBooleanConfigItem;
import xstartup.config.XConfigMetadata;
@XConfig
public class FormTimeControlConfig {
public XBooleanConfigItem disableFormTimeControl = XConfigMetadata.register(FormTimeControlConfig.class,
"disableFormTimeControl",
XBooleanConfigItem.class);
}
package pps.core.common.config;
import xstartup.annotation.XConfig;
import xstartup.config.XConfigMetadata;
import xstartup.config.XIntegerConfigItem;
/**
* @author lixueyan
* @date 2022/8/4 0007 12:44
*/
/**
* obs 配置类
*/
@XConfig
public class ObsConfig {
//url 过期时间
public static final XIntegerConfigItem urlExpires = XConfigMetadata.register(ObsConfig.class, "urlExpires", XIntegerConfigItem.class);
}
package pps.core.common.config;
import pps.core.common.utils.TimeSpanChecker;
import xstartup.annotation.XConfig;
import xstartup.base.XContext;
import xstartup.config.XBooleanConfigItem;
import xstartup.config.XConfigMetadata;
@XConfig
public class OldPPSTransferConfig {
public static final XBooleanConfigItem useMq2OldPPSConfig = XConfigMetadata.register(TraceLogConfig.class,
"useMq2OldPPS",
XBooleanConfigItem.class);
/**
* 是否使用微服务调用
*/
private static boolean useMq2OldPPS = false;
private static TimeSpanChecker checker = new TimeSpanChecker(60, false);
public static boolean checkUseMq2OldPPSConfig(XContext context) {
return true;
// try{
// if( checker.checkNow() && useMq2OldPPSConfig != null){
// useMq2OldPPS = useMq2OldPPSConfig.getValueNotNull(context);
// }
// return useMq2OldPPS;
// }catch (Exception e){
// return false;
// }
}
}
package pps.core.common.constant;
/**
* @author lixueyan
* @date 2022/8/30 0030 13:50
*/
public class BpmProcessCodeConstant {
public static final String PROCESS_CODE_TASK_PLAN_WEEK_SUBMIT = "PPS-TRQ-ZZYJHSH-001"; //周作业计划提交流程编码
public static final String PROCESS_CODE_TASK_PLAN_CHANGE = ""; //作业计划变更流程编码
public static final String PROCESS_CODE_TASK_PLAN_JJ_SUBMIT = "PPS-TRQ-JJZYJHSH-001"; //临时作业计划提交流程编码
public static final String PROCESS_CODE_TASK_PLAN_MONTH_SUBMIT = "PPS-TRQ-YDZYJHSH-001"; //月度作业计划提交流程编码
public static final String PROCESS_CODE_TASK_PLAN_YEAR_SUBMIT = "PPS-TRQ-NDZYJHSH-001"; //年度作业计划提交流程编码
}
......@@ -7,26 +7,6 @@ package pps.core.common.constant;
*/
public interface Constant {
int FLAG_TRUE = 1;
int FLAG_FALSE = 0;
/**
* 成功
*/
int SUCCESS = 1;
/**
* 失败
*/
int FAIL = 0;
/**
* 表单类型-草稿
*/
int FORMTEMPLATE_DRAFT = 1;
/**
* 表单类型-已发布
*/
int FORMTEMPLATE_COMMIT = 2;
/**
* 有子集
*/
......@@ -35,106 +15,14 @@ public interface Constant {
* 无子集
*/
int ISHASHCHILDREN_FALSE = 0;
/**
* 菜单根节点标识
*/
Long MENU_ROOT = 0L;
/**
* 部门根节点标识
*/
Long DEPT_ROOT = 0L;
/**
* 升序
*/
String ASC = "asc";
/**
* 降序
*/
String DESC = "desc";
/**
* 创建时间字段名
*/
String CREATE_DATE = "create_date";
/**
* 数据权限过滤
*/
String SQL_FILTER = "sqlFilter";
/**
* 当前页码
*/
String PAGE = "page";
/**
* 每页显示记录数
*/
String LIMIT = "limit";
/**
* 排序字段
*/
String ORDER_FIELD = "orderField";
/**
* 排序方式
*/
String ORDER = "order";
/**
* token header
*/
String TOKEN_HEADER = "token";
/**
* 云存储配置KEY
*/
String CLOUD_STORAGE_CONFIG_KEY = "CLOUD_STORAGE_CONFIG_KEY";
/**
* 定时任务状态
*/
enum ScheduleStatus {
/**
* 暂停
*/
PAUSE(0),
/**
* 正常
*/
NORMAL(1);
private int value;
ScheduleStatus(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
/**
* 云服务商
*/
enum CloudService {
/**
* 七牛云
*/
QINIU(1),
/**
* 阿里云
*/
ALIYUN(2),
/**
* 腾讯云
*/
QCLOUD(3);
private int value;
CloudService(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
}
......@@ -6,6 +6,5 @@ package pps.core.common.constant;
*/
public class LoginConstant {
public static final Long LOGIN_FLAG_SIMULATE = 1000000L; //模拟登陆
public static final Long LOGIN_FLAG_TRADE = 2000000L; //交易平台登陆
}
package pps.core.common.data;
import java.util.HashMap;
public class FormBizDataRecord {
// 表字段
private HashMap<String, Object> fields;
// 是否新记录
private boolean isNewRecord;
public HashMap<String, Object> getFields() {
return fields;
}
public void setFields(HashMap<String, Object> fields) {
this.fields = fields;
}
public boolean isNewRecord() {
return isNewRecord;
}
public void setNewRecord(boolean newRecord) {
isNewRecord = newRecord;
}
}
package pps.core.common.data;
import java.util.HashSet;
public class FormBizDataRemovedRecordId {
// id 列表
private HashSet<String> ids;
public HashSet<String> getIds() {
return ids;
}
public void setIds(HashSet<String> ids) {
this.ids = ids;
}
}
package pps.core.common.data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
public class FormBizDataValue {
@XText("表单id")
private String formInputId;
@XText("点定义id")
private String dataDefineId;
@XText("日期")
private Date dataDate;
@XText("点值(数值)")
private BigDecimal numericValue;
@XText("状态(0:无效,1:有效)")
private String status;
@XText("点值(文本)")
private String textValue;
private String stationId;
private String ouId;
public String getFormInputId() {
return formInputId;
}
public void setFormInputId(String formInputId) {
this.formInputId = formInputId;
}
public String getDataDefineId() {
return dataDefineId;
}
public void setDataDefineId(String dataDefineId) {
this.dataDefineId = dataDefineId;
}
public Date getDataDate() {
return dataDate;
}
public void setDataDate(Date dataDate) {
this.dataDate = dataDate;
}
public BigDecimal getNumericValue() {
return numericValue;
}
public void setNumericValue(BigDecimal numericValue) {
this.numericValue = numericValue;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTextValue() {
return textValue;
}
public void setTextValue(String textValue) {
this.textValue = textValue;
}
public String getStationId() {
return stationId;
}
public void setStationId(String stationId) {
this.stationId = stationId;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
}
package pps.core.common.data;
public class IdWithName {
private String id;
private String name;
public IdWithName() {
}
public IdWithName(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package pps.core.common.data;
public class LabelWithName {
private String label;
private String name;
public LabelWithName() {
}
public LabelWithName(String labelOrName) {
this.label = labelOrName;
this.name = labelOrName;
}
public LabelWithName(String label, String name) {
this.label = label;
this.name = name;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package pps.core.common.enums;
import xstartup.data.XFileType;
public enum FileTypeEnum {
IMAGE_PNG(".png", XFileType.IMAGE_PNG),
IMAGE_GIF(".gif", XFileType.IMAGE_GIF),
IMAGE_JPEG(".jpeg", XFileType.IMAGE_JPEG),
TEXT_HTML(".html", XFileType.TEXT_HTML),
TEXT_PLAIN(".txt", XFileType.TEXT_PLAIN),
TEXT_XML(".xml", XFileType.TEXT_XML),
VIDEO_MP4(".mpeg4", XFileType.VIDEO_MP4),
VIDEO_MP3(".mpeg3", XFileType.VIDEO_MP3),
APPLICATION_XLSX(".xlsx", XFileType.APPLICATION_XLSX),
APPLICATION_XLS(".xls", XFileType.APPLICATION_XLSX),
APPLICATION_DOCX(".docx", XFileType.APPLICATION_DOCX),
APPLICATION_DOC(".doc", XFileType.APPLICATION_DOCX),
APPLICATION_JSON(".json", XFileType.APPLICATION_JSON),
APPLICATION_PDF(".pdf", XFileType.APPLICATION_PDF),
APPLICATION_ZIP(".zip", XFileType.APPLICATION_ZIP),
OTHER("", XFileType.APPLICATION_OCTET_STREAM);
private String attachType;
private XFileType fileType;
FileTypeEnum(String attachType, XFileType fileType) {
this.attachType = attachType;
this.fileType = fileType;
}
public static FileTypeEnum findByType(String attachType) {
for (FileTypeEnum e : values()) {
if (e.getAttachType().equals(attachType)) {
return e;
}
}
return OTHER;
}
public String getAttachType() {
return attachType;
}
public void setAttachType(String attachType) {
this.attachType = attachType;
}
public XFileType getFileType() {
return fileType;
}
public void setFileType(XFileType fileType) {
this.fileType = fileType;
}
}
//package pps.core.common.job;
//
//import com.google.common.base.Strings;
//import pps.core.common.utils.CounterBuilder;
//import pps.core.common.utils.DateUtil;
//import pps.core.common.utils.DynObj;
////import pps.core.common.utils.JedisHelper;
//import pps.core.common.utils.JedisHelper;
//import xstartup.annotation.XService;
//import xstartup.annotation.XText;
//import xstartup.base.XContext;
//import xstartup.base.XStartup;
//import xstartup.base.util.XJsonUtils;
//import xstartup.data.XServiceResult;
//import xstartup.service.job.XJob;
//import xstartup.service.job.annotation.XCronTrigger;
//
//import java.util.Set;
//import java.util.concurrent.locks.ReentrantLock;
//
//@XText("计数任务")
//@XService
//public class CounterJob implements XJob {
//
// public static final String CLUSTER_GLOBAL_COUNTER = "counter.cluster_global_counter";
// public static final String CLUSTER_GLOBAL_COUNTER_LOCK = "counter.cluster_global_counter_lock";
// private ReentrantLock publishLock = new ReentrantLock();
// public static boolean EnableJob = false;
//
// @XCronTrigger(value = "0/20 * * * * ?")//XCronTrigger.PRE_30S
// @Override
// public XServiceResult execute(XContext context) {
// if (!EnableJob) {
// return XServiceResult.OK;
// }
//
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.Timer");
// CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob.Timer.LatestTime", DateUtil.getCurrentDateTime());
// if (publishLock.tryLock()) {
// DynObj dynObj = CounterBuilder.globalCounterBuilder.toDynObj();
// dynObj.put(CounterBuilder.COUNTER_NAME_INSTANCE, CounterBuilder.globalCounterBuilder.counterId);
// dynObj.put("__LATEST_TIMER_TIME__", DateUtil.getCurrentDateTime());
// context.getLogger().info(XJsonUtils.toJson(dynObj));
// long publishStart = System.currentTimeMillis();
// publish(dynObj);
// long publishEnd = System.currentTimeMillis();
// CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob.Publish.UsedSecnods", (publishEnd - publishStart) / 1000 + "");
// publishLock.unlock();
// } else {
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.LocalLockFailed");
// }
// return XServiceResult.OK;
// }
//
// public static String getAppClusterName() {
// String appName = XStartup.getApplication().getName();
// String appClusterName = CLUSTER_GLOBAL_COUNTER + "_" + appName;
// return appClusterName;
// }
//
// public static String getAppClusterLockName() {
// String appName = XStartup.getApplication().getName();
// String appClusterLockName = CLUSTER_GLOBAL_COUNTER_LOCK + "_" + appName;
// return appClusterLockName;
// }
//
// private void publish(DynObj dynObj) {
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.publish-begin");
// try {
// String nodeKey = String.format("counter.%s.%s", dynObj.getString(CounterBuilder.DEPLOY_KEY, "UnknownDeploy"), CounterBuilder.globalCounterBuilder.counterId);
// dynObj.put(CounterBuilder.COUNTER_NAME_OWNER, nodeKey);
// String cacheType = XStartup.getCurrent().getProperty("x.cache.type");
// CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob.cacheType", cacheType);
// String appClusterName = getAppClusterName();
// String appClusterLockName = getAppClusterLockName();
//
// if ("redis-cluster".equals(cacheType)) {
//
// JedisHelper.consumeDefalutJedisCluster((jedisCluster) -> {
// // 记录到集群中
// jedisCluster.sadd(appClusterName, nodeKey);
// // 集群3分钟过期
// jedisCluster.expire(appClusterName, 3 * 20);
//
// boolean isMaster = false;
// long success = jedisCluster.setnx(appClusterLockName, nodeKey);
// if (success != 0) {
// jedisCluster.expire(appClusterLockName, 40);
// isMaster = true;
// }
// String lockKey = jedisCluster.get(appClusterLockName);
// if (nodeKey.equals(lockKey)) {
// jedisCluster.expire(appClusterLockName, 40);
// isMaster = true;
// }
//
// CounterBuilder.globalCounterBuilder.setFieldValue("__MASTER__", isMaster + "");
// if (isMaster) {
// if (Strings.isNullOrEmpty(CounterBuilder.globalCounterBuilder.getFieldValue("__MASTER-TIME__"))) {
// CounterBuilder.globalCounterBuilder.setFieldValue("__MASTER-TIME__", DateUtil.getCurrentDateTime());
// CounterBuilder.globalCounterBuilder.addCounter("__MASTER-TIMES__");
// }
// }else{
// if (!Strings.isNullOrEmpty(CounterBuilder.globalCounterBuilder.getFieldValue("__MASTER-TIME__"))) {
// CounterBuilder.globalCounterBuilder.setFieldValue("__MASTER-TIME__", "");
// }
// }
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.PublishToRedis");
// CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob.PublishToRedis.TIME", DateUtil.getCurrentDateTime());
// // 记录到redis ,3 * 30s过期
// jedisCluster.setex(nodeKey, 3 * 20, XJsonUtils.toJson(dynObj));
//
// if (isMaster) {
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.Timer.Locked");
// Set<String> nodeKeys = jedisCluster.smembers(appClusterName);
// nodeKeys.forEach(k -> {
// if (!jedisCluster.exists(k)) {
// jedisCluster.srem(appClusterName, k);
// }
// });
// } else {
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.Timer.NotLocked");
// }
// });
// } else {
// JedisHelper.consumeDefalutJedis((jedis) -> {
// // 记录到redis ,3 * 30s过期
//// jedis.setex(nodeKey, 3 * 20, XJsonUtils.toJson(dynObj));
//// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.PublishToRedis");
//// CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob.PublishToRedis.TIME", DateUtil.getCurrentDateTime());
//
// // 记录到集群中
// jedis.sadd(appClusterName, nodeKey);
// // 集群3分钟过期
// jedis.expire(appClusterName, 3 * 20);
//
// boolean isMaster = false;
// long success = jedis.setnx(appClusterLockName, nodeKey);
// if (success != 0) {
// jedis.expire(appClusterLockName, 40);
// isMaster = true;
// }
// String lockKey = jedis.get(appClusterLockName);
// if (nodeKey.equals(lockKey)) {
// jedis.expire(appClusterLockName, 40);
// isMaster = true;
// }
//
// CounterBuilder.globalCounterBuilder.setFieldValue("__MASTER__", isMaster + "");
// if (isMaster) {
// if (Strings.isNullOrEmpty(CounterBuilder.globalCounterBuilder.getFieldValue("__MASTER-TIME__"))) {
// CounterBuilder.globalCounterBuilder.setFieldValue("__MASTER-TIME__", DateUtil.getCurrentDateTime());
// CounterBuilder.globalCounterBuilder.addCounter("__MASTER-TIMES__");
// }
// }else{
// if (!Strings.isNullOrEmpty(CounterBuilder.globalCounterBuilder.getFieldValue("__MASTER-TIME__"))) {
// CounterBuilder.globalCounterBuilder.setFieldValue("__MASTER-TIME__", "");
// }
// }
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.PublishToRedis");
// CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob.PublishToRedis.TIME", DateUtil.getCurrentDateTime());
// // 记录到redis ,3 * 30s过期
// jedis.setex(nodeKey, 3 * 20, XJsonUtils.toJson(dynObj));
//
// if (isMaster) {
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.Timer.Locked");
// Set<String> nodeKeys = jedis.smembers(appClusterName);
// nodeKeys.forEach(k -> {
// if (!jedis.exists(k)) {
// jedis.srem(appClusterName, k);
// }
// });
// } else {
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob.Timer.NotLocked");
// }
// });
// }
// } catch (Exception ex) {
// CounterBuilder.globalCounterBuilder.addCounter(ex, this.getClass());
//// CounterBuilder.globalCounterBuilder.addCounter("Exception-" + CounterJob.class.getSimpleName() + "-" + ex.getClass().getSimpleName());
// }
// }
//
//}
......@@ -14,9 +14,7 @@ public class CounterJob5S {
public static final String CLUSTER_GLOBAL_COUNTER_LOCK = "counter.cluster_global_counter_lock";
public static final TimeSpanChecker publishChecker = new TimeSpanChecker(15, true);
public static boolean EnableJob = false;
// public static final TimeSpanChecker onlineChecker = new TimeSpanChecker(60, true);
private static AtomicBoolean master = new AtomicBoolean(false);
// private static HashMap<String, String> onlineNodes = new HashMap<String, String>();
public static void executeJob() {
if (!EnableJob) {
......@@ -43,10 +41,6 @@ public class CounterJob5S {
publish(dynObj);
long publishEnd = System.currentTimeMillis();
CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob-Publish-UsedSecnods", (publishEnd - publishStart) / 1000 + "");
//
// if (onlineChecker.checkNow()) {
// checkOnLine();
// }
}
public static String getAppClusterName() {
......@@ -117,13 +111,7 @@ public class CounterJob5S {
if (!jedis.exists(k)) {
jedis.srem(appClusterName, k);
CounterBuilder.globalCounterBuilder.addCounter("Remove-Node");
// if (onlineNodes.containsKey(k)) {
// onlineNodes.remove(k);
// }
} else {
// if (!onlineNodes.containsKey(k) && !k.equals(myNodeKey)) {
// onlineNodes.put(k, "");
// }
}
});
} else {
......@@ -132,11 +120,6 @@ public class CounterJob5S {
});
} else {
JedisHelper.consumeDefalutJedis((jedis) -> {
// 记录到redis ,3 * 30s过期
// jedis.setex(nodeKey, 3 * 20, XJsonUtils.toJson(dynObj));
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob-PublishToRedis");
// CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob-PublishToRedis-TIME", DateUtil.getCurrentDateTime());
// 记录到集群中
jedis.sadd(appClusterName, myNodeKey);
// 集群3分钟过期
......@@ -165,7 +148,6 @@ public class CounterJob5S {
if (!Strings.isNullOrEmpty(CounterBuilder.globalCounterBuilder.getFieldValue("__MASTER-TIME__"))) {
CounterBuilder.globalCounterBuilder.setFieldValue("__MASTER-TIME__", "");
}
// onlineNodes.clear();
}
CounterBuilder.globalCounterBuilder.addCounter("CounterJob-PublishToRedis");
CounterBuilder.globalCounterBuilder.setFieldValue("CounterJob-PublishToRedis-TIME", DateUtil.getCurrentDateTime());
......@@ -179,13 +161,9 @@ public class CounterJob5S {
if (!jedis.exists(k)) {
jedis.srem(appClusterName, k);
CounterBuilder.globalCounterBuilder.addCounter("Remove-Node");
// if (onlineNodes.containsKey(k)) {
// onlineNodes.remove(k);
// }
} else {
// if (!onlineNodes.containsKey(k) && !k.equals(myNodeKey)) {
// onlineNodes.put(k, "");
// }
}
});
} else {
......@@ -195,71 +173,6 @@ public class CounterJob5S {
}
} catch (Exception ex) {
CounterBuilder.globalCounterBuilder.addCounter(ex, CounterJob5S.class);
// CounterBuilder.globalCounterBuilder.addCounter("Exception-" + CounterJob.class.getSimpleName() + "-" + ex.getClass().getSimpleName());
}
}
//
// public static void checkOnLine() {
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob-checkOnLine-begin");
// if (!master.get()) {
// return;
// }
// try {
// String cacheType = XStartup.getCurrent().getProperty("x.cache.type");
//
// if ("redis-cluster".equals(cacheType)) {
//
// JedisHelper.consumeDefalutJedisCluster((jedis) -> {
// onlineNodes.keySet().stream().collect(Collectors.toList()).forEach(nodeKey -> {
// String v = onlineNodes.get(nodeKey);
// if (Strings.isNullOrEmpty(v)) {
// String jedisValue = jedis.get(nodeKey);
// if (!Strings.isNullOrEmpty(jedisValue)) {
// onlineNodes.put(nodeKey, jedisValue);
// } else {
// onlineNodes.remove(nodeKey);
// }
// } else {
// String jedisValue = jedis.get(nodeKey);
// if (jedisValue.equals(v)) {
// onlineNodes.remove(nodeKey);
// jedis.del(nodeKey);
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob-checkOnLine-removed");
// } else {
// onlineNodes.put(nodeKey, jedisValue);
// }
// }
//
// });
// });
// } else {
// JedisHelper.consumeDefalutJedis((jedis) -> {
// onlineNodes.keySet().stream().collect(Collectors.toList()).forEach(nodeKey -> {
// String v = onlineNodes.get(nodeKey);
// if (Strings.isNullOrEmpty(v)) {
// String jedisValue = jedis.get(nodeKey);
// if (!Strings.isNullOrEmpty(jedisValue)) {
// onlineNodes.put(nodeKey, jedisValue);
// } else {
// onlineNodes.remove(nodeKey);
// }
// } else {
// String jedisValue = jedis.get(nodeKey);
// if (jedisValue.equals(v)) {
// onlineNodes.remove(nodeKey);
// jedis.del(nodeKey);
// CounterBuilder.globalCounterBuilder.addCounter("CounterJob-checkOnLine-removed");
// } else {
// onlineNodes.put(nodeKey, jedisValue);
// }
// }
//
// });
// });
// }
// } catch (Exception ex) {
// CounterBuilder.globalCounterBuilder.addCounter(ex, CounterJob5S.class);
// }
// }
}
......@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
public class TempCleanJob5S {
public static final TimeSpanChecker jobChecker = new TimeSpanChecker(60 * 60, true);
public static final ConcurrentHashMap<String, String[]> tempFilePatttern = new ConcurrentHashMap<String, String[]>();
public static final ConcurrentHashMap<String, String[]> tempFilePatttern = new ConcurrentHashMap<>();
public static boolean EnableJob = true;
static {
......@@ -80,15 +80,10 @@ public class TempCleanJob5S {
Path path = file.toPath();
// creating BasicFileAttributes class object using
// readAttributes method
BasicFileAttributes file_att = Files.readAttributes(
path, BasicFileAttributes.class);
// printing the file creation time by calling
// creationTime() method
// System.out.printf("File Creation Time %s%n ",
// file_att.creationTime());
long createTime = file_att.creationTime().toMillis();
long now = System.currentTimeMillis();
if (now - createTime < TimeSpanChecker.TIMESPAN_MS_1d) {
......@@ -98,6 +93,4 @@ public class TempCleanJob5S {
file.delete();
return true;
}
}
}
\ No newline at end of file
......@@ -21,10 +21,6 @@ public class PpsCoreCommonModule extends XModule {
@Override
protected void onStarted(XContext context) {
//XProviderManager.setDefaultImplement(context, XDynamicPermissionProvider.class, PpsDynamicPermissionProviderImpl.class);
//注册访问日志 实现类
//XProviderManager.setDefaultImplement(context, XApiAccessLogProvider.class, PpsApiAccessLogProviderImpl.class);
//session存储 实现类
XProviderManager.setDefaultImplement(context, XSessionStorageProvider.class, PpsSessionStorageProviderImpl.class);
// 环境
CounterBuilder.globalCounterBuilder.setFieldValue(CounterBuilder.COUNTER_NAME_ENV, context.getEnv().getText());
......@@ -33,12 +29,7 @@ public class PpsCoreCommonModule extends XModule {
CounterBuilder.globalCounterBuilder.setFieldValue(CounterBuilder.COUNTER_NAME_BUILDTIME, buildTime);
FiveSecondsTimerJobHelper.INSTANCE.setContext(context);
FiveSecondsTimerJobHelper.INSTANCE.register(CounterJob5S::executeJob);
FiveSecondsTimerJobHelper.INSTANCE.register(new Runnable() {
@Override
public void run() {
TempCleanJob5S.executeTimerJob(context);
}
});
FiveSecondsTimerJobHelper.INSTANCE.register(() -> TempCleanJob5S.executeTimerJob(context));
ManifestComponentInfoHelper.init(this.getClass().getClassLoader());
}
}
package pps.core.common.mq;
import xstartup.annotation.XText;
import xstartup.base.mq.XMqMessage;
import java.util.Date;
import java.util.UUID;
/**
* @author lixueyan
* @date 2022/8/3 0003 10:28
*/
public class AccessLogMqMessage extends XMqMessage {
@XText("系统名称")
private String systemName;
@XText("作用域名称")
private String scopeName;
@XText("模块名称")
private String moduleName;
@XText("服务名称")
private String serviceName;
@XText("方法名称")
private String actionName;
@XText("请求方式")
private String requestMethod;
@XText("请求ip")
private String requestIp;
@XText("浏览器信息")
private String browserInfo;
private String source;
@XText("请求参数-json格式")
private String requestValue;
@XText("响应参数-json格式")
private String responseValue;
@XText("用户id")
private String userId;
@XText("执行时间")
private Date executionTime;
@XText("异常信息")
private String exceptionInfo;
@XText("是否异常")
private Boolean isException;
public AccessLogMqMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public String getSystemName() {
return this.systemName;
}
public void setSystemName(String value) {
this.systemName = value;
}
public String getScopeName() {
return this.scopeName;
}
public void setScopeName(String value) {
this.scopeName = value;
}
public String getModuleName() {
return this.moduleName;
}
public void setModuleName(String value) {
this.moduleName = value;
}
public String getServiceName() {
return this.serviceName;
}
public void setServiceName(String value) {
this.serviceName = value;
}
public String getActionName() {
return this.actionName;
}
public void setActionName(String value) {
this.actionName = value;
}
public String getRequestMethod() {
return this.requestMethod;
}
public void setRequestMethod(String value) {
this.requestMethod = value;
}
public String getRequestIp() {
return this.requestIp;
}
public void setRequestIp(String value) {
this.requestIp = value;
}
public String getBrowserInfo() {
return this.browserInfo;
}
public void setBrowserInfo(String value) {
this.browserInfo = value;
}
public String getSource() {
return this.source;
}
public void setSource(String value) {
this.source = value;
}
public String getRequestValue() {
return this.requestValue;
}
public void setRequestValue(String value) {
this.requestValue = value;
}
public String getResponseValue() {
return this.responseValue;
}
public void setResponseValue(String value) {
this.responseValue = value;
}
public String getUserId() {
return this.userId;
}
public void setUserId(String value) {
this.userId = value;
}
public Date getExecutionTime() {
return this.executionTime;
}
public void setExecutionTime(Date value) {
this.executionTime = value;
}
public String getExceptionInfo() {
return this.exceptionInfo;
}
public void setExceptionInfo(String value) {
this.exceptionInfo = value;
}
public Boolean getIsException() {
return this.isException;
}
public void setIsException(Boolean value) {
this.isException = value;
}
// @Override
// public String getMessageTag() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageId() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageKey() {
// return UUIDHelper.newUUID();
// }
}
package pps.core.common.mq;
import xstartup.annotation.XText;
import xstartup.base.mq.XMqMessage;
import java.util.UUID;
/**
* @author lixueyan
* @date 2022/8/3 0003 10:28
*/
public class AckImsMqMessage extends XMqMessage {
@XText("PPS作业计划id")
private String pps_id;
@XText("PPS作业计划编号")
private String pps_num;
@XText("PPS审核状态(审核通过:36476审核未通过:36067)")
private String pps_status;
@XText("PPS审核意见")
private String pps_result;
@XText("PPS审核人")
private String pps_audit;
@XText("审核步骤:1.所属企业分控中心节点,2.国调节点")
private String pps_step;
public AckImsMqMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public String getPps_id() {
return pps_id;
}
public void setPps_id(String pps_id) {
this.pps_id = pps_id;
}
public String getPps_num() {
return pps_num;
}
public void setPps_num(String pps_num) {
this.pps_num = pps_num;
}
public String getPps_status() {
return pps_status;
}
public void setPps_status(String pps_status) {
this.pps_status = pps_status;
}
public String getPps_result() {
return pps_result;
}
public void setPps_result(String pps_result) {
this.pps_result = pps_result;
}
public String getPps_audit() {
return pps_audit;
}
public void setPps_audit(String pps_audit) {
this.pps_audit = pps_audit;
}
public String getPps_step() {
return pps_step;
}
public void setPps_step(String pps_step) {
this.pps_step = pps_step;
}
}
package pps.core.common.mq;
import xstartup.base.mq.XMqMessage;
import java.util.UUID;
public class CreatePDFValueMessage extends XMqMessage {
public String formId;
public Integer type;
private String originalMessageId;
public CreatePDFValueMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public String getFormId() {
return formId;
}
public void setFormId(String formId) {
this.formId = formId;
}
public Integer getType() {
if (type == null)
type = 1;
return type;
}
public void setType(Integer type) {
this.type = type;
}
//
// @Override
// public String getMessageTag() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageId() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageKey() {
// return UUIDHelper.newUUID();
// }
public String getOriginalMessageId() {
return originalMessageId;
}
public void setOriginalMessageId(String originalMessageId) {
this.originalMessageId = originalMessageId;
}
}
package pps.core.common.mq;
import pps.core.common.data.FormBizDataRecord;
import xstartup.base.mq.XMqMessage;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
/**
* @author xcd
* @version V1.0
* @Description: 发送给 分析库 的 数据记录
* @date 2022/10/13
*/
public class FormBizDataRecordMessage extends XMqMessage {
// 表名
private String tableName;
// 表单标签
private String formTag;
private String formInputRecordId;
private String dataDate;
private String originalMessageId;
private List<FormBizDataRecord> records;
public FormBizDataRecordMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public FormBizDataRecordMessage(FormBizDataRecord[] records) {
this.records = Arrays.asList(records);
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public FormBizDataRecordMessage(List<FormBizDataRecord> records) {
this.records = records;
}
public List<FormBizDataRecord> getRecords() {
return records;
}
public void setRecords(List<FormBizDataRecord> records) {
this.records = records;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getFormTag() {
return formTag;
}
public void setFormTag(String formTag) {
this.formTag = formTag;
}
public String getDataDate() {
return dataDate;
}
public void setDataDate(String dataDate) {
this.dataDate = dataDate;
}
// @Override
// public String getMessageTag() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageId() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageKey() {
// return UUIDHelper.newUUID();
// }
public String getFormInputRecordId() {
return formInputRecordId;
}
public void setFormInputRecordId(String formInputRecordId) {
this.formInputRecordId = formInputRecordId;
}
public String getOriginalMessageId() {
return originalMessageId;
}
public void setOriginalMessageId(String originalMessageId) {
this.originalMessageId = originalMessageId;
}
}
package pps.core.common.mq;
import pps.core.common.data.FormBizDataRemovedRecordId;
import xstartup.base.mq.XMqMessage;
import java.util.List;
import java.util.UUID;
/**
* @author xcd
* @version V1.0
* @Description: 发送给 分析库 的 已经删除的表单的记录id 的消息定义
* @date 2022/10/13
*/
public class FormBizDataRemovedRecordIdMessage extends XMqMessage {
// 表名
private String tableName;
//表单业务
private String formTag;
private String originalMessageId;
private List<FormBizDataRemovedRecordId> removedRecordIds;
public FormBizDataRemovedRecordIdMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getFormTag() {
return formTag;
}
public void setFormTag(String formTag) {
this.formTag = formTag;
}
public List<FormBizDataRemovedRecordId> getRemovedRecordIds() {
return removedRecordIds;
}
public void setRemovedRecordIds(List<FormBizDataRemovedRecordId> removedRecordIds) {
this.removedRecordIds = removedRecordIds;
}
// @Override
// public String getMessageTag() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageId() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageKey() {
// return UUIDHelper.newUUID();
// }
public String getOriginalMessageId() {
return originalMessageId;
}
public void setOriginalMessageId(String originalMessageId) {
this.originalMessageId = originalMessageId;
}
}
package pps.core.common.mq;
import pps.core.common.data.FormBizDataValue;
import xstartup.base.mq.XMqMessage;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
/**
* @author xcd
* @version V1.0
* @Description: 发送给 过渡期pps的消息定义
* @date 2022/10/13
*/
public class FormBizDataValueMessage extends XMqMessage {
public List<FormBizDataValue> values;
private String originalMessageId;
public FormBizDataValueMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public FormBizDataValueMessage(FormBizDataValue[] values) {
this.values = Arrays.asList(values);
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public List<FormBizDataValue> getValues() {
return values;
}
public void setValues(List<FormBizDataValue> values) {
this.values = values;
}
// @Override
// public String getMessageTag() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageId() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageKey() {
// return UUIDHelper.newUUID();
// }
public String getOriginalMessageId() {
return originalMessageId;
}
public void setOriginalMessageId(String originalMessageId) {
this.originalMessageId = originalMessageId;
}
}
package pps.core.common.mq;
import pps.core.common.utils.CounterBuilder;
import pps.core.common.utils.JedisHelper;
import pps.core.common.utils.TraceHelper;
import xstartup.base.XContext;
import xstartup.base.XStartup;
import xstartup.base.util.XJsonUtils;
public class MessageTraceHelper {
public static final String KEY = "Message-Trace-Log";
public static String getKey() {
String env = XStartup.getCurrent().getEnv().getText();
String key = env + "-" + KEY;
return key;
}
public static void consumeAMessageFromFrame(MessageTraceInfo messageTraceInfo, XContext context) {
try {
String cacheType = XStartup.getCurrent().getProperty("x.cache.type");
String json = XJsonUtils.toJson(messageTraceInfo);
String key = getKey();
if ("redis-cluster".equals(cacheType)) {
JedisHelper.consumeDefalutJedisCluster((jedis) -> {
jedis.lpush(key, json);
CounterBuilder.globalCounterBuilder.addCounter("consumeAMessage:" + messageTraceInfo.getMessageType());
});
} else {
JedisHelper.consumeDefalutJedis((jedis) -> {
jedis.lpush(key, json);
CounterBuilder.globalCounterBuilder.addCounter("consumeAMessage:" + messageTraceInfo.getMessageType());
});
}
} catch (Exception ex) {
TraceHelper.appendTraceLog(context, ex);
}
}
}
package pps.core.common.mq;
public class MessageTraceInfo {
private String messageId;
private String messageType;
private boolean success;
public MessageTraceInfo() {
}
public MessageTraceInfo(String messageId, String messageType, boolean success) {
this.messageId = messageId;
this.messageType = messageType;
this.success = success;
}
public String getMessageId() {
return messageId;
}
public void setMessageId(String messageId) {
this.messageId = messageId;
}
public String getMessageType() {
return messageType;
}
public void setMessageType(String messageType) {
this.messageType = messageType;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
}
package pps.core.common.mq;
import xstartup.base.mq.XMqMessage;
import java.util.Date;
import java.util.UUID;
public class PushDispLngShippingScheduleDateValueMessage extends XMqMessage {
public String id;
public Integer type;
public Boolean complated;
public Boolean deleted;
public Date changeTime;
public PushDispLngShippingScheduleDateValueMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Boolean getComplated() {
return complated;
}
public void setComplated(Boolean complated) {
this.complated = complated;
}
public Boolean getDeleted() {
return deleted;
}
public void setDeleted(Boolean deleted) {
this.deleted = deleted;
}
public Date getChangeTime() {
return changeTime;
}
public void setChangeTime(Date changeTime) {
this.changeTime = changeTime;
}
// @Override
// public String getMessageTag() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageId() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageKey() {
// return UUIDHelper.newUUID();
// }
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
}
package pps.core.common.mq;
import xstartup.annotation.XText;
import xstartup.base.mq.XMqMessage;
import java.util.UUID;
public class PushMeasureDateValueMessage extends XMqMessage {
public String formId;
@XText("是否作废:0否1是")
public Integer isDelete;
public PushMeasureDateValueMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public String getFormId() {
return formId;
}
public void setFormId(String formId) {
this.formId = formId;
}
public Integer getIsDelete() {
return isDelete;
}
public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
// @Override
// public String getMessageTag() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageId() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageKey() {
// return UUIDHelper.newUUID();
// }
}
package pps.core.common.mq;
import xstartup.annotation.XText;
import xstartup.base.mq.XMqMessage;
import java.util.UUID;
public class SysInformSendMqMessage extends XMqMessage {
@XText("id")
private String id;
public SysInformSendMqMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
package pps.core.common.mq;
import xstartup.annotation.XText;
import xstartup.base.mq.XMqMessage;
import java.util.Date;
import java.util.UUID;
/**
* @author lixueyan
* @date 2022/8/3 0003 10:28
*/
public class TransferLogMqMessage extends XMqMessage {
@XText("topic名称")
private String topicName;
@XText("mq-message")
private String mqMessage;
@XText("创建时间")
private Date createTime;
@XText("异常信息")
private String exceptionInfo;
public TransferLogMqMessage() {
setMessageTag(UUID.randomUUID().toString().replace("-", ""));
setMessageId(UUID.randomUUID().toString().replace("-", ""));
setMessageKey(UUID.randomUUID().toString().replace("-", ""));
}
public String getTopicName() {
return topicName;
}
public void setTopicName(String topicName) {
this.topicName = topicName;
}
public String getMqMessage() {
return mqMessage;
}
public void setMqMessage(String mqMessage) {
this.mqMessage = mqMessage;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getExceptionInfo() {
return exceptionInfo;
}
public void setExceptionInfo(String exceptionInfo) {
this.exceptionInfo = exceptionInfo;
}
// @Override
// public String getMessageTag() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageId() {
// return UUIDHelper.newUUID();
// }
//
// @Override
// public String getMessageKey() {
// return UUIDHelper.newUUID();
// }
}
......@@ -10,7 +10,7 @@ public enum MybaitisGlobalConfigSuppiler implements Supplier<GlobalConfig> {
private final GlobalConfig globalConfig;
private MybaitisGlobalConfigSuppiler() {
MybaitisGlobalConfigSuppiler() {
this.globalConfig = GlobalConfigUtils.defaults();
this.globalConfig.setIdentifierGenerator(new MyIDGenerator());
}
......
package pps.core.common.pattern;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**
* Node of Chain Pattern
*/
public class ChainNode<T> {
private T node;
private ChainNode<T> successor;
public T getNode() {
return node;
}
public void setNode(T node) {
this.node = node;
}
public ChainNode<T> getSuccessor() {
return successor;
}
// public void setSuccessor(ChainNode<T> successor) {
// this.successor = successor;
// }
public ChainNode<T> append(T successorNode) {
ChainNode<T> successorChainNode = new ChainNode<>();
successorChainNode.setNode(successorNode);
// this.setSuccessor(successorChainNode);
this.successor = successorChainNode;
return successorChainNode;
}
public ChainNode<T> getLastSuccessor() {
if (this.successor == null) {
return this;
} else {
return this.successor.getLastSuccessor();
}
}
public ChainNode<T> setOrAppendLast(T node) {
if (this.node == null) {
this.node = node;
return this;
}
ChainNode<T> lastSuccessor = this.getLastSuccessor();
if (lastSuccessor.node == null) {
lastSuccessor.node = node;
return lastSuccessor;
}
return lastSuccessor.append(node);
}
public void walkThroughLast(Consumer<T> consumer) {
if (this.node != null) {
consumer.accept(this.node);
}
if (this.successor != null) {
this.successor.walkThroughLast(consumer);
}
}
public List<ChainNode<T>> walkThroughLast() {
return walkThroughLast(new ArrayList<>());
}
public List<ChainNode<T>> walkThroughLast(List<ChainNode<T>> list) {
if (list == null) {
list = new ArrayList<>();
}
list.add(this);
if (this.successor == null) {
return list;
} else {
return this.successor.walkThroughLast(list);
}
}
}
\ No newline at end of file
package pps.core.common.pdf;
import com.itextpdf.text.pdf.BaseFont;
import org.apache.commons.codec.binary.Base64;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import sun.misc.BASE64Decoder;
import java.io.*;
import java.util.Map;
public class Html2Pdf {
public static String htmlTopdf(String htmlContent, String fontPath) throws Exception {
ByteArrayOutputStream byteArrayOutputStream = null;
InputStream sbs = null;
try {
byteArrayOutputStream = new ByteArrayOutputStream();
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver font = renderer.getFontResolver();
font.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//添加中文识别,这里是设置的宋体,Linux下要换成对应的字体
renderer.setDocumentFromString(htmlContent);
renderer.layout();
renderer.createPDF(byteArrayOutputStream);
renderer.finishPDF();
byte[] buffer = byteArrayOutputStream.toByteArray();
sbs = new ByteArrayInputStream(buffer);
return getBase64FromInputStream(sbs);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (byteArrayOutputStream != null) {
try {
byteArrayOutputStream.close();
} catch (IOException e) {
}
}
if (sbs != null) {
try {
sbs.close();
} catch (IOException e) {
}
}
}
return null;
}
public static byte[] htmlToPdfByte(String htmlContent, String fontPath) {
ByteArrayOutputStream byteArrayOutputStream = null;
try {
byteArrayOutputStream = new ByteArrayOutputStream();
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver font = renderer.getFontResolver();
font.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//添加中文识别,这里是设置的宋体,Linux下要换成对应的字体
renderer.setDocumentFromString(htmlContent);
renderer.layout();
renderer.createPDF(byteArrayOutputStream);
renderer.finishPDF();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (byteArrayOutputStream != null) {
try {
byteArrayOutputStream.close();
} catch (IOException e) {
}
}
}
return byteArrayOutputStream.toByteArray();
}
public static String getBase64FromInputStream(InputStream in) {
// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
byte[] data = null;
// 读取图片字节数组
try {
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int rc = 0;
while ((rc = in.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
data = swapStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return new String(Base64.encodeBase64(data));
}
public static void saveBase64strToFile(String base64str, String outPath) {
createFile(new File(outPath));
if (base64str == null) {
return;
}
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(base64str);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
OutputStream out = new FileOutputStream(outPath);
out.write(b);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static String replaceContent(String htmlContent, Map<String, String> map) {
for (Map.Entry<String, String> entry : map.entrySet()) {
htmlContent = htmlContent.replaceAll(entry.getKey(), entry.getValue());
}
return htmlContent;
}
public static void createFile(File file) {
if (file.exists()) {
System.out.println("File exists");
} else {
System.out.println("File not exists, create it ...");
//getParentFile() 获取上级目录(包含文件名时无法直接创建目录的)
if (!file.getParentFile().exists()) {
System.out.println("not exists");
//创建上级目录
file.getParentFile().mkdirs();
}
try {
//在上级目录里创建文件
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void outFile(InputStream input, String outPath) {
createFile(new File(outPath));
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(input);
out = new BufferedOutputStream(new FileOutputStream(outPath));
int len = -1;
byte[] b = new byte[1024];
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
in.close();
out.close();
} catch (Exception e) {
}
}
}
......@@ -27,53 +27,6 @@ public class CollectorsUtil {
return i -> (R) i;
}
static class CollectorImpl<T, A, R> implements Collector<T, A, R> {
private final Supplier<A> supplier;
private final BiConsumer<A, T> accumulator;
private final BinaryOperator<A> combiner;
private final Function<A, R> finisher;
private final Set<Characteristics> characteristics;
CollectorImpl(Supplier<A> supplier, BiConsumer<A, T> accumulator, BinaryOperator<A> combiner,
Function<A, R> finisher, Set<Characteristics> characteristics) {
this.supplier = supplier;
this.accumulator = accumulator;
this.combiner = combiner;
this.finisher = finisher;
this.characteristics = characteristics;
}
CollectorImpl(Supplier<A> supplier, BiConsumer<A, T> accumulator, BinaryOperator<A> combiner,
Set<Characteristics> characteristics) {
this(supplier, accumulator, combiner, castingIdentity(), characteristics);
}
@Override
public BiConsumer<A, T> accumulator() {
return accumulator;
}
@Override
public Supplier<A> supplier() {
return supplier;
}
@Override
public BinaryOperator<A> combiner() {
return combiner;
}
@Override
public Function<A, R> finisher() {
return finisher;
}
@Override
public Set<Characteristics> characteristics() {
return characteristics;
}
}
//求和方法
public static <T> Collector<T, ?, BigDecimal> summingBigDecimal(ToBigDecimalFunction<? super T> mapper) {
return new CollectorImpl<>(
......@@ -138,4 +91,51 @@ public class CollectorsUtil {
},
a -> a[0].divide(a[1], RoundingMode.HALF_UP).setScale(newScale, roundingMode), CH_NOID);
}
static class CollectorImpl<T, A, R> implements Collector<T, A, R> {
private final Supplier<A> supplier;
private final BiConsumer<A, T> accumulator;
private final BinaryOperator<A> combiner;
private final Function<A, R> finisher;
private final Set<Characteristics> characteristics;
CollectorImpl(Supplier<A> supplier, BiConsumer<A, T> accumulator, BinaryOperator<A> combiner,
Function<A, R> finisher, Set<Characteristics> characteristics) {
this.supplier = supplier;
this.accumulator = accumulator;
this.combiner = combiner;
this.finisher = finisher;
this.characteristics = characteristics;
}
CollectorImpl(Supplier<A> supplier, BiConsumer<A, T> accumulator, BinaryOperator<A> combiner,
Set<Characteristics> characteristics) {
this(supplier, accumulator, combiner, castingIdentity(), characteristics);
}
@Override
public BiConsumer<A, T> accumulator() {
return accumulator;
}
@Override
public Supplier<A> supplier() {
return supplier;
}
@Override
public BinaryOperator<A> combiner() {
return combiner;
}
@Override
public Function<A, R> finisher() {
return finisher;
}
@Override
public Set<Characteristics> characteristics() {
return characteristics;
}
}
}
\ No newline at end of file
package pps.core.common.utils;
import pps.core.common.entity.ICommonEnt;
import xstartup.base.XContext;
public class CommonEntUtils {
public static void setCreateInfo(ICommonEnt ent, XContext context) {
// ent.setCreateTime(new Date());
// ent.setCreateName(context.getUser().getName());
// ent.setCreateUserid(context.getUser().getCode());
// ent.setModifyTime(new Date());
// ent.setModifyByName(context.getUser().getName());
// ent.setModifyUserid(context.getUser().getCode());
ent.updateCreateInfo(context);
}
public static void setModifyInfo(ICommonEnt ent, XContext context) {
// ent.setModifyTime(new Date());
// ent.setModifyByName(context.getUser().getName());
// ent.setModifyUserid(context.getUser().getCode());
ent.updateModifyInfo(context);
}
}
package pps.core.common.utils;
import com.google.common.base.Strings;
import pps.core.common.config.MqConfig;
import pps.core.common.config.TraceLogConfig;
import pps.core.common.mq.CommonTraceLogMessage;
import xstartup.base.XContext;
import xstartup.base.XServiceContext;
import xstartup.base.mq.XMqFactory;
import xstartup.base.mq.XMqProduceQueue;
import xstartup.base.mq.XMqProducer;
import xstartup.core.base.helper.XThreadHelper;
import xstartup.data.XServiceResult;
import java.util.Date;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.atomic.LongAdder;
public enum CommonTraceLogger {
INSTANCE;
private final LinkedBlockingQueue<TraceHelper.TraceBuilder> traceBuilderQueue =
new LinkedBlockingQueue<TraceHelper.TraceBuilder>(10240);
private final LongAdder exceptionCounter = new LongAdder();
private final LongAdder insertedCounter = new LongAdder();
private ConcurrentHashMap<String, String> traceIds = new ConcurrentHashMap<String, String>();
private XMqProducer<CommonTraceLogMessage> producer = null;
private XContext context;
private final Thread workerThread = new Thread(new Runnable() {
@Override
public void run() {
executeWork();
}
});
public synchronized void start() {
if (workerThread.getState().equals(Thread.State.NEW)) {
workerThread.start();
}
}
public long getExceptionCount() {
return exceptionCounter.longValue();
}
public long getInsertCount() {
return insertedCounter.longValue();
}
public long tasks() {
return this.traceBuilderQueue.size();
}
public void add(XContext context) {
TraceHelper.TraceBuilder traceBuilder = TraceHelper.getTraceBuilder(context);
if (traceBuilder == null) {
return;
}
add(traceBuilder, context);
}
public void add(TraceHelper.TraceBuilder builder) {
this.add(builder, null);
}
public void add(TraceHelper.TraceBuilder builder, XContext context) {
// 读取配置
Boolean enableTraceLog = context == null ? true : TraceLogConfig.checkEnableTraceLog(context);// TraceLogConfig.enableTraceLog != null ? TraceLogConfig.enableTraceLog.getValue(context) : null;
if (context != null && enableTraceLog != null && !enableTraceLog.booleanValue()) {
return;
}
try {
if (context != null) {
context.getLogger().info(builder.buildTraceLog());
}
traceBuilderQueue.put(builder);
CounterBuilder.globalCounterBuilder.addCounter("CommonTraceLog-Add");
} catch (InterruptedException e) {
exceptionCounter.increment();
}
}
private void executeWork() {
while (true) {
try {
if (context == null) {
this.context = XServiceContext.build(CommonTraceLogger.class);
}
if (this.producer == null) {
this.producer = this.createProducer(this.context);
}
if (this.producer == null) {
CounterBuilder.globalCounterBuilder.addCounter("CommonTraceLogger-producerError");
XThreadHelper.sleep(5000);
continue;
}
TraceHelper.TraceBuilder traceBuilder = traceBuilderQueue.take();
CommonTraceLogMessage message = new CommonTraceLogMessage();
message.setCreateTime(new Date());
message.setTraceid(traceBuilder.getTraceId());
message.setTraceInfo2(traceBuilder.buildTraceLog());
XServiceResult publishResult = this.producer.publish(context, message);
if (!publishResult.isSuccess()) {
CounterBuilder.globalCounterBuilder.addCounter("CommonTraceLog-Posted-Failed");
} else {
CounterBuilder.globalCounterBuilder.addCounter("CommonTraceLog-Posted-Success");
}
} catch (Exception ex) {
exceptionCounter.increment();
CounterBuilder.globalCounterBuilder.addCounter(ex, this.getClass());
CounterBuilder.globalCounterBuilder.addCounter("CommonTraceLog-WorkException");
XThreadHelper.sleep(1000);
}
}
}
private XMqProducer<CommonTraceLogMessage> createProducer(XContext context) {
String queueName = MqConfig.CommonTraceLogMq.getValue(context);
if (Strings.isNullOrEmpty(queueName)) {
throw new RuntimeException("CommonTraceLogMq主题配置错误");
}
XMqProduceQueue queue = new XMqProduceQueue.Builder().queue(queueName).build();
XMqProducer<CommonTraceLogMessage> producer = XMqFactory.createProducer(context, queue, CommonTraceLogMessage.class);
return producer;
}
}
package pps.core.common.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateHelper {
// new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("9999-12-31 00:00:00");
public static Date ENDTIME;// new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("9999-12-31 00:00:00");
static {
try {
ENDTIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("9999-12-31 00:00:00");
} catch (ParseException e) {
ENDTIME = new Date(9000, 1, 1);
}
}
}
package pps.core.common.utils;
import com.google.common.base.Strings;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class HashHelper {
public static String getMD5Str(String str) {
byte[] digest = null;
try {
byte[] input = str.getBytes("utf-8");
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(input);
digest = md5.digest();
} catch (NoSuchAlgorithmException e) {
//e.printStackTrace();
} catch (UnsupportedEncodingException e) {
//e.printStackTrace();
}
//16是表示转换为16进制数
//String md5Str = new BigInteger(1, digest).toString(16);
return bytesToHexString(digest);
}
/**
* Convert byte[] to hex string
*
* @param src byte[] data
* @return hex string
*/
public static String bytesToHexString(byte[] src) {
return bytesToHexString(src, null);
}
public static String bytesToHexString(byte[] src, String splitter) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
if (!Strings.isNullOrEmpty(splitter)) {
stringBuilder.append(splitter);
}
}
return stringBuilder.toString();
}
}
package pps.core.common.utils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
* Http
*
* @author lixueyan
*/
public class HttpContextUtils {
public static HttpServletRequest getHttpServletRequest() {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes == null) {
return null;
}
return ((ServletRequestAttributes) requestAttributes).getRequest();
}
public static Map<String, String> getParameterMap(HttpServletRequest request) {
Enumeration<String> parameters = request.getParameterNames();
Map<String, String> params = new HashMap<>();
while (parameters.hasMoreElements()) {
String parameter = parameters.nextElement();
String value = request.getParameter(parameter);
if (StringUtils.isNotBlank(value)) {
params.put(parameter, value);
}
}
return params;
}
public static String getDomain() {
HttpServletRequest request = getHttpServletRequest();
StringBuffer url = request.getRequestURL();
return url.delete(url.length() - request.getRequestURI().length(), url.length()).toString();
}
public static String getOrigin() {
HttpServletRequest request = getHttpServletRequest();
return request.getHeader(HttpHeaders.ORIGIN);
}
}
package pps.core.common.utils;
import org.apache.commons.lang3.StringUtils;
/**
* @author lixueyan
* @date 2023/1/10 0010 16:45
*/
public class JsonUtil {
/**
* json字符串特殊字符处理
*
* @param jsonStr
* @return
*/
public static String string2Json(String jsonStr) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < jsonStr.length(); i++) {
char c = jsonStr.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '/':
sb.append("\\/");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
default:
sb.append(c);
}
}
return sb.toString();
}
public static String escapeExprSpecialWord(String keyword) {
if (StringUtils.isNotBlank(keyword)) {
String[] fbsArr = {"\\", "$", "(", ")", "*", "+", "?", "'", "^", "|", "\b", "\t", "\f", "\n", "\r"};
for (String key : fbsArr) {
if (keyword.contains(key)) {
keyword = keyword.replace(key, "\\" + key);
}
}
}
return keyword;
}
}
package pps.core.common.utils;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class ManualResetEvent {
private final Integer mutex;
private volatile CountDownLatch event;
public ManualResetEvent(boolean signalled) {
mutex = new Integer(-1);
if (signalled) {
event = new CountDownLatch(0);
} else {
event = new CountDownLatch(1);
}
}
public void set() {
event.countDown();
}
public void reset() {
synchronized (mutex) {
if (this.isSignalled()) {
event = new CountDownLatch(1);
}
}
}
public void waitOne() throws InterruptedException {
event.await();
}
public boolean waitOne(int timeout) throws InterruptedException {
return waitOne(timeout, TimeUnit.MILLISECONDS);
}
public boolean waitOne(int timeout, TimeUnit unit) throws InterruptedException {
return event.await(timeout, unit);
}
public boolean isSignalled() {
return event.getCount() == 0;
}
}
package pps.core.common.utils;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import pps.core.common.bean.SpringContextUtils;
/**
* 国际化
*
* @author lixueyan
* @since 1.0.0
*/
public class MessageUtils {
private static MessageSource messageSource;
static {
messageSource = (MessageSource) SpringContextUtils.getBean("messageSource");
}
public static String getMessage(int code) {
return getMessage(code, new String[0]);
}
public static String getMessage(int code, String... params) {
return messageSource.getMessage(code + "", params, LocaleContextHolder.getLocale());
}
}
package pps.core.common.utils;
import com.google.common.base.Strings;
public class NameConvertHelper {
public static boolean isEmpty(String s) {
return s == null || s.length() == 0;
}
//abc-def-ghi -> AbcDefGhi
public static String pathToClass(String path) {
String[] segments = path.split("-");
StringBuilder builder = new StringBuilder(path.length());
for (int index = 0; index < segments.length; ++index) {
if (segments[index].length() > 1) {
char letter = segments[index].charAt(0);
builder.append(Character.toUpperCase(letter));
builder.append(segments[index].substring(1).toLowerCase());
} else {
builder.append(segments[index].toUpperCase());
}
}
return builder.toString();
}
//abc-def-ghi -> abcDefGhi
public static String pathToCamel(String value) {
String[] segments = value.split("-");
if (segments.length == 1) {
return segments[0];
} else {
StringBuilder builder = new StringBuilder(value.length() + 5);
for (int index = 0; index < segments.length; ++index) {
if (segments[index].length() > 1) {
char letter = segments[index].charAt(0);
if (builder.length() == 0) {
builder.append(Character.toLowerCase(letter));
} else {
builder.append(Character.toUpperCase(letter));
}
builder.append(segments[index].substring(1).toLowerCase());
} else {
builder.append(segments[index].toUpperCase());
}
}
return builder.toString();
}
}
// abc_def -> abcDef
public static String columnToCamel(String value) {
String[] segments = value.split("_");
StringBuilder builder = new StringBuilder(value.length());
for (int index = 0; index < segments.length; ++index) {
if (segments[index].length() > 1) {
char letter = segments[index].charAt(0);
if (builder.length() == 0) {
builder.append(Character.toLowerCase(letter));
} else {
builder.append(Character.toUpperCase(letter));
}
builder.append(segments[index].substring(1).toLowerCase());
} else {
builder.append(segments[index].toUpperCase());
}
}
return builder.toString();
}
// Abc -> abc
public static String toCamel(String value) {
if (isEmpty(value)) {
return value;
} else {
return 'A' <= value.charAt(0) && 'Z' >= value.charAt(0) //首字母大写?
? String.format("%s%s", value.substring(0, 1).toLowerCase(), value.substring(1))
: value;
}
}
//abc -> Abc
public static String toClass(String value) {
if (isEmpty(value)) {
return value;
} else {
return 'a' <= value.charAt(0) && 'z' >= value.charAt(0) //首字母小写
? String.format("%s%s", value.substring(0, 1).toUpperCase(), value.substring(1))
: value;
}
}
//AbcDef -> abc-def
public static String toPath(String value) {
if (Strings.isNullOrEmpty(value)) {
return value;
}
StringBuilder stringBuilder = new StringBuilder(value.length() + 5);
int startIndex = 0;
int index = 0;
for (index = 0; index < value.length(); ++index) {
if (Character.isUpperCase(value.charAt(index))) {
if (stringBuilder.length() == 0) {
stringBuilder.append(value.substring(startIndex, index).toLowerCase());
} else {
stringBuilder.append("-");
stringBuilder.append(value.substring(startIndex, index).toLowerCase());
}
startIndex = index;
}
}
if (startIndex != index) {
if (stringBuilder.length() == 0) {
stringBuilder.append(value.substring(startIndex, index).toLowerCase());
} else {
stringBuilder.append("-");
stringBuilder.append(value.substring(startIndex, index).toLowerCase());
}
}
if (stringBuilder.length() == 0) {
stringBuilder.append(value);
}
return stringBuilder.toString();
}
//AbcDef -> abc_def
public static String toColumn(String value) {
StringBuilder stringBuilder = new StringBuilder(value.length() + 5);
int startIndex = 0;
int index;
for (index = 0; index < value.length(); ++index) {
if (Character.isUpperCase(value.charAt(index))) {
if (stringBuilder.length() == 0) {
stringBuilder.append(value.substring(startIndex, index).toLowerCase());
} else {
stringBuilder.append("_");
stringBuilder.append(value.substring(startIndex, index).toLowerCase());
}
startIndex = index;
}
}
if (startIndex != index) {
if (stringBuilder.length() == 0) {
stringBuilder.append(value.substring(startIndex, index).toLowerCase());
} else {
stringBuilder.append("_");
stringBuilder.append(value.substring(startIndex, index).toLowerCase());
}
}
if (stringBuilder.length() == 0) {
stringBuilder.append(value);
}
return stringBuilder.toString();
}
}
package pps.core.common.utils;
import xstartup.base.XContext;
import xstartup.core.base.model.XNaming;
public class NamedServiceProvider {
public static <T> T getServiceByName(XContext context, String serviceName, Class<T> clazz) {
return context.getBean(XNaming.build(serviceName), clazz);
}
}
package pps.core.common.utils;
import java.util.regex.Pattern;
public class NumberFixHelper {
private static Pattern ptn1 = Pattern.compile("0+?$");
private static Pattern ptn2 = Pattern.compile("[.]$");
public static String subZeroAndDot(String s) {
//todo: 使用編譯的正則表達式,優化性能
if (s.indexOf(".") > 0) {
s = s.replaceAll("0+?$", "");//去掉多余的0
s = s.replaceAll("[.]$", "");//如最后一位是.则去掉
}
return s;
}
}
package pps.core.common.utils;
public class RedisBasedCacheHelper {
public static String get(String a) {
return null;
}
}
......@@ -18,9 +18,6 @@ public class TreeUtils {
* 根据pid,构建树节点
*/
public static <T extends TreeNode> List<T> build(List<T> treeNodes, Long pid) {
//pid不能为空
//AssertUtils.isNull(pid, "pid");
List<T> treeList = new ArrayList<>();
for (T treeNode : treeNodes) {
if (pid.equals(treeNode.getPid())) {
......
......@@ -4,53 +4,17 @@ import com.fasterxml.uuid.Generators;
import com.fasterxml.uuid.NoArgGenerator;
import java.security.SecureRandom;
import java.util.Random;
import java.util.UUID;
public class UUIDHelper {
private static final NoArgGenerator noArgGenerator = Generators.timeBasedEpochGenerator(new SecureRandom());
// private static final byte[] myFingerPrint = new byte[2];
static {
Random random = new Random(System.currentTimeMillis());
// random.nextBytes(myFingerPrint);
}
public static String newUUID() {
UUID uuid = noArgGenerator.generate();
// byte[] bytes = UUIDUtil.asByteArray(uuid);
// int i = 0;
// for (int idx = myFingerPrint.length - 1; idx >= 0; idx--) {
// addBytes(myFingerPrint[idx], bytes, bytes.length - 1 - i);
// i++;
// }
// uuid = UUIDUtil.uuid(bytes);
return uuid.toString();
}
// public static String hex(byte[] bytes) {
// StringBuilder result = new StringBuilder();
// for (byte aByte : bytes) {
// result.append(String.format("%02x", aByte));
// }
// return result.toString();
// }
//
// private static void addBytes(byte plus, byte[] bytes, int idx) {
// byte current = bytes[idx];
// if (current + plus < 256) {
// bytes[idx] = (byte) (current + plus);
// } else {
// current = (byte) ((current + plus) % 256);
// plus = (byte) ((current + plus) / 256);
// bytes[idx] = current;
// if (idx > 0) {
// addBytes(plus, bytes, idx - 1);
// }
// }
// }
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
System.out.println(newUUID());
......
package pps.core.common.utils;
import xstartup.data.XServiceResult;
public class WellkownServiceResult extends XServiceResult {
public WellkownServiceResult() {
super();
}
public WellkownServiceResult(boolean success, int error, String message, Exception e) {
super(success, error, message, e);
}
public WellkownServiceResult(int error, String message, Exception e) {
super(error, message, e);
}
public static WellkownServiceResult okWithMessage(String message) {
return new WellkownServiceResult(true, 200, message, null);
}
}
CREATE TABLE `base_sys_log_1`
(
`id` int NOT NULL AUTO_INCREMENT,
`system_name` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '系统名称',
`scope_name` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '作用域名称',
`module_name` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '模块名称',
`service_name` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '服务名称',
`action_name` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '方法名称',
`request_method` varchar(8) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求方式',
`request_ip` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求ip',
`browser_info` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '浏览器信息',
`source` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
`request_value` varchar(2048) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求参数-json格式',
`response_value` varchar(2048) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '响应参数-json格式',
`user_id` bigint DEFAULT NULL COMMENT '用户id',
`execution_time` datetime DEFAULT NULL COMMENT '执行时间\n',
`exception_info` varchar(2048) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常信息',
`is_exception` tinyint(1) DEFAULT '0' COMMENT '是否异常',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
......@@ -17,9 +17,6 @@ public interface SysOrganizationCloudService {
@XText("根据用户id获取组织机构")
XSingleResult<GetSysOrganizationViewOutput> getOuByUserId(XContext context, GetSysOrganizationViewInput input);
@XText("根据组织机构子id获取父级组织机构")
XSingleResult<GetSysOrganizationViewOutput> getOrganizationBySubOuId(XContext context, GetSysOrganizationViewInput input);
@XText("根据组织机构ids获取组织机构")
XListResult<GetOuListTreeOutput> getOuListByOuIds(XContext context, GetOuListByOuIdsInput input);
......
......@@ -2,7 +2,6 @@ package pps.core.system.config;
import xstartup.annotation.XConfig;
import xstartup.config.XConfigMetadata;
import xstartup.config.XIntegerConfigItem;
import xstartup.config.XStringConfigItem;
/**
......@@ -11,25 +10,9 @@ import xstartup.config.XStringConfigItem;
*/
@XConfig
public class LoginConfig {
public static final XIntegerConfigItem expiresIn = XConfigMetadata.register(LoginConfig.class, "expiresIn", XIntegerConfigItem.class);
public static final XStringConfigItem adminRoles = XConfigMetadata.register(LoginConfig.class, "adminRoles", XStringConfigItem.class);
public static final XStringConfigItem iamToLoginUrl = XConfigMetadata.register(LoginConfig.class, "iamToLoginUrl", XStringConfigItem.class);
//登陆短信内容模板
public static final XStringConfigItem smsContent = XConfigMetadata.register(LoginConfig.class, "smsContent", XStringConfigItem.class);
//登陆短信验证码有效期
public static final XIntegerConfigItem smsCodeValidity = XConfigMetadata.register(LoginConfig.class, "smsCodeValidity", XIntegerConfigItem.class);
//登陆短信内容模板
public static final XStringConfigItem forgetSmsContent = XConfigMetadata.register(LoginConfig.class, "forgetSmsContent", XStringConfigItem.class);
//登陆短信发送间隔
public static final XIntegerConfigItem sendSmsCodeInterval = XConfigMetadata.register(LoginConfig.class, "sendSmsCodeInterval", XIntegerConfigItem.class);
//交易平台交互私钥(加密后)
public static final XStringConfigItem rsaPrivateKey = XConfigMetadata.register(LoginConfig.class, "rsaPrivateKey", XStringConfigItem.class);
//关键信息加密私钥(加密后)
public static final XStringConfigItem userRsaPrivateKey = XConfigMetadata.register(LoginConfig.class, "userRsaPrivateKey", XStringConfigItem.class);
//关键信息加密公钥(加密后)
public static final XStringConfigItem userRsaPublicKey = XConfigMetadata.register(LoginConfig.class, "userRsaPublicKey", XStringConfigItem.class);
//交易平台交互IP白名单
public static final XStringConfigItem ipWhite = XConfigMetadata.register(LoginConfig.class, "ipWhite", XStringConfigItem.class);
//是否发送短信
public XIntegerConfigItem sendSmsCodeSwitch = XConfigMetadata.register(LoginConfig.class, "sendSmsCodeSwitch", XIntegerConfigItem.class);
}
package pps.core.system.constant;
public class DicMenuConstant {
//菜单Id 字典alias
public static final String DIC_MENU_ALIAS = "MENU_IDS";
//管输日指定查看
public static final String DIC_MENU_KEY_GSRZDCK = "DIC_MENU_KEY_GSRZDCK";
//管输日指定查看-企业
public static final String DIC_MENU_KEY_GSRZDCK_QY = "DIC_MENU_KEY_GSRZDCK_QY";
//Lng日指定查看
public static final String DIC_MENU_KEY_LNGRZDCK = "DIC_MENU_KEY_LNGRZDCK";
}
package pps.core.system.constant;
/**
* pps运维管理常量及工具
*/
public class OperationMaintenanceManagementConstants {
/*
0 未提交
1 已提交
2 审核中
3 审批通过
4 已驳回*/
//未提交
public static final int SAVED = 0;
//搁置(空闲)2已经包括了提交
public static final int SUBMITTED = 1;
//已提交,审核中
public static final int UNDER_REVIEW = 2;
//审核通过
public static final int PASSED = 3;
//已驳回
public static final int REJECT = 4;
//终止流程
public static final int TERMINATION = 5;
//接受需求
public static final int ACCEPTDEMAND = 6;
/*
4 不操作
5 有中止
6 有接受需求和终止
7 有接受需求和终止但没有提交通过
*/
//4 不操作
public static final int NOOPERATION = 4;
//5 有中止
public static final int DISCONTINUE = 5;
// 6 有接受需求和终止
public static final int SUSPENSIONACCEPTANCE = 6;
//7 有接受需求和终止但没有提交通过
public static final int SUSPENDACCEPTSUBMISSIONS = 7;
}
package pps.core.system.constant;
public class OperationManagement {
//未删除
public static final Integer ACC_ISDELETE_YES = 1;
//已删除
public static final Integer ACC_ISDELETE_NO = 0;
//1已提交 无法修改
public static final Integer DATA_STATE_YES = 1;
//0暂存
public static final Integer DATA_STATE_NO = 0;
public static final String CANNOT_MODIFY = "数据已提交,无法修改";
/*
0 未提交
1 已提交
2 审核中
3 审批通过
4 已驳回*/
public static final String YOU_PIN = "成品油";
//未提交
public static final int SAVED = 0;
public static final int SUBMITTED = 1;
//已提交,审核中
public static final int UNDER_REVIEW = 2;
//审核通过
public static final int PASSED = 3;
//已驳回
public static final int REJECT = 4;
//终止流程
public static final int TERMINATION = 5;
//接受需求
public static final int ACCEPTDEMAND = 6;
}
......@@ -23,9 +23,9 @@ public enum OuLevelConstant implements DictEnum {
DOWN_CLIENT(11, "上游客户", "DOWN_CLIENT");
@EnumValue
private Integer value = 0;
private String desc = "";
private String code = "";
private Integer value;
private String desc;
private String code;
OuLevelConstant(Integer value, String desc, String code) {
this.value = value;
......
package pps.core.system.constant;
public class PpsAuthPermissionCode {
public static final String TEST_TOKEN = "TEST_TOKEN";
public static final String TEST_TOKEN_DENY = "TEST_TOKEN_DENY";
}
package pps.core.system.constant;
/**
* @Description: 操作状态
*/
public enum SysInformHandleTypeConstant {
HAND_WORK(1, "手工发送"),
SAVE(2, "暂存"),
RESET(3, "重置"),
COMMIT(4, "提交"),
BACK(5, "审核退回"),
PASS(6, "审核通过"),
CHANGE(7, "变更申请"),
PASS_CHAGNE(8, "同意变更"),
REFUSE_CHANGE(9, "拒绝变更");
private Integer value;
private String desc;
SysInformHandleTypeConstant(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static SysInformHandleTypeConstant findByValue(Integer v) {
for (SysInformHandleTypeConstant e : values()) {
if (e.getValue().equals(v)) {
return e;
}
}
return null;
}
public static SysInformHandleTypeConstant findByDesc(String desc) {
for (SysInformHandleTypeConstant e : values()) {
if (e.getDesc().equals(desc)) {
return e;
}
}
return null;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package pps.core.system.constant;
/**
* @Description: 接收方式
*/
public enum SysInformReceiveTypeConstant {
USER(1, "人员"),
GROUP(2, "收件组"),
ROLE(3, "角色"),
ORG(4, "机构"),
ROLE_BJDW(5, "角色-提交人本级单位"),
ROLE_EJDW(6, "角色-提交人二级单位"),
ROLE_SSQY(7, "角色-提交人所属企业"),
ROLE_CCGC(8, "存储过程"),
ROLE_QB(9, "全部"),
ORG_CHILD(10, "机构(含子级)");
private Integer value;
private String desc;
SysInformReceiveTypeConstant(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static SysInformReceiveTypeConstant findByValue(Integer v) {
for (SysInformReceiveTypeConstant e : values()) {
if (e.getValue().equals(v)) {
return e;
}
}
return null;
}
public static SysInformReceiveTypeConstant findByDesc(String desc) {
for (SysInformReceiveTypeConstant e : values()) {
if (e.getDesc().equals(desc)) {
return e;
}
}
return null;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package pps.core.system.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("sys_out_user_create_log")
public class SysOutUserCreateLogEnt implements Serializable {
@XText("主键")
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@XText("组织机构层级")
@TableField
private String ouLevel;
@XText("客户id")
@TableField
private String clientId;
@XText("客户名称")
@TableField
private String clientName;
@XText("组织机构id")
@TableField
private String ouId;
@XText("组织机构名称")
@TableField
private String ouName;
@XText("登录名")
@TableField
private String loginName;
@XText("IAM接口登录名称")
@TableField
private String iamLoginName;
@XText("员工编号")
@TableField
private String userCode;
@XText("用户姓名")
@TableField
private String userName;
@XText("用户密码,客户类使用此字段,内网用户不使用")
@TableField
private String password;
@XText("电话")
@TableField
private String phone;
@XText("用户邮箱")
@TableField
private String email;
@XText("邮编")
@TableField
private String postalCode;
@XText("地址")
@TableField
private String address;
@XText("信息")
@TableField
private String msg;
@XText("角色用户id-iam账户")
@TableField
private String userId;
@XText("状态:0保存、1通过、2驳回")
@TableField
private Integer status;
@XText("删除状态(0删除 1正常)")
@TableField
private Integer isDelete;
@XText("创建人")
@TableField
private String createById;
@XText("创建人名称")
@TableField
private String createByName;
@XText("创建时间")
@TableField
private Date createTime;
@XText("修改人")
@TableField
private String modifyById;
@XText("修改人名称")
@TableField
private String modifyByName;
@XText("修改时间")
@TableField
private Date modifyTime;
@XText("介质")
@TableField
private String mediumList;
}
package pps.core.system.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("sys_out_user_search_client_log")
public class SysOutUserSearchClientLogEnt implements Serializable {
@XText("主键")
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@XText("ip地址")
@TableField
private String ipAddress;
@XText("错误信息")
@TableField
private String errorMsg;
@XText("创建时间")
@TableField
private Date createTime;
}
package pps.core.system.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("sys_user_forget_log")
public class SysUserForgetLogEnt implements Serializable {
@XText("主键")
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@XText("登录账户")
@TableField
private String loginName;
@XText("ip")
@TableField
private String ipAddress;
@XText("创建时间")
@TableField
private Date createTime;
}
package pps.core.system.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
@TableName("sys_user_import_log_detail")
public class SysUserImportLogDetailEnt implements Serializable {
@XText("主键")
@TableField
private String id;
@XText("主表id")
@TableField
private String logId;
@XText("组织机构id")
@TableField
private String ouId;
@XText("组织机构名称")
@TableField
private String ouName;
@XText("登录名")
@TableField
private String loginName;
@XText("IAM接口登录名称")
@TableField
private String iamLoginName;
@XText("员工编号")
@TableField
private String userCode;
@XText("用户姓名")
@TableField
private String userName;
@XText("用户密码,客户类使用此字段,内网用户不使用")
@TableField
private String password;
@XText("是否外网访问:1是 2否")
@TableField
private String isOuter;
@XText("是否内网访问:1是 2否")
@TableField
private String isInner;
@XText("职务-系统字典")
@TableField
private String duty;
@XText("电话")
@TableField
private String phone;
@XText("用户邮箱")
@TableField
private String email;
@XText("邮编")
@TableField
private String postalCode;
@XText("地址")
@TableField
private String address;
@XText("创建人")
@TableField
private String createById;
@XText("创建人名称")
@TableField
private String createByName;
@XText("创建时间")
@TableField
private Date createTime;
@XText("状态:0成功、1失败")
@TableField
private Integer status;
@XText("信息")
@TableField
private String msg;
@XText("角色用户id-iam账户")
@TableField
private String userId;
@XText("角色用户id")
@TableField(exist = false)
private String userIdAct;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLogId() {
return logId;
}
public void setLogId(String logId) {
this.logId = logId;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public String getOuName() {
return ouName;
}
public void setOuName(String ouName) {
this.ouName = ouName;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getIamLoginName() {
return iamLoginName;
}
public void setIamLoginName(String iamLoginName) {
this.iamLoginName = iamLoginName;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getIsOuter() {
return isOuter;
}
public void setIsOuter(String isOuter) {
this.isOuter = isOuter;
}
public String getIsInner() {
return isInner;
}
public void setIsInner(String isInner) {
this.isInner = isInner;
}
public String getDuty() {
return duty;
}
public void setDuty(String duty) {
this.duty = duty;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPostalCode() {
return postalCode;
}
public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCreateById() {
return createById;
}
public void setCreateById(String createById) {
this.createById = createById;
}
public String getCreateByName() {
return createByName;
}
public void setCreateByName(String createByName) {
this.createByName = createByName;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserIdAct() {
return userIdAct;
}
public void setUserIdAct(String userIdAct) {
this.userIdAct = userIdAct;
}
}
package pps.core.system.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
@TableName("sys_user_import_log")
public class SysUserImportLogEnt implements Serializable {
@XText("主键")
@TableField
private String id;
@XText("组织机构id")
@TableField
private String ouId;
@XText("组织机构名称")
@TableField
private String ouName;
@XText("创建人")
@TableField
private String createById;
@XText("创建人名称")
@TableField
private String createByName;
@XText("创建时间")
@TableField
private Date createTime;
@XText("状态:0成功、1部分成功、2失败")
@TableField
private Integer status;
@XText("修改人")
@TableField
private String modifyById;
@XText("修改人名称")
@TableField
private String modifyByName;
@XText("修改时间")
@TableField
private Date modifyTime;
@XText("删除状态(0删除 1正常)")
@TableField
private Integer isDelete;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public String getOuName() {
return ouName;
}
public void setOuName(String ouName) {
this.ouName = ouName;
}
public String getCreateById() {
return createById;
}
public void setCreateById(String createById) {
this.createById = createById;
}
public String getCreateByName() {
return createByName;
}
public void setCreateByName(String createByName) {
this.createByName = createByName;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getModifyById() {
return modifyById;
}
public void setModifyById(String modifyById) {
this.modifyById = modifyById;
}
public String getModifyByName() {
return modifyByName;
}
public void setModifyByName(String modifyByName) {
this.modifyByName = modifyByName;
}
public Date getModifyTime() {
return modifyTime;
}
public void setModifyTime(Date modifyTime) {
this.modifyTime = modifyTime;
}
public Integer getIsDelete() {
return isDelete;
}
public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
}
package pps.core.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.system.entity.SysOutUserCreateLogEnt;
@Repository(value = "pps.core.system.mapper.SysOutUserCreateLogMapper")
public interface SysOutUserCreateLogMapper extends BaseMapper<SysOutUserCreateLogEnt> {
}
package pps.core.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.system.entity.SysOutUserSearchClientLogEnt;
@Repository(value = "pps.core.system.mapper.SysOutUserSearchCilentLogMapper")
public interface SysOutUserSearchCilentLogMapper extends BaseMapper<SysOutUserSearchClientLogEnt> {
}
package pps.core.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.system.entity.SysUserForgetLogEnt;
@Repository(value = "pps.core.system.mapper.SysUserForgetLogMapper")
public interface SysUserForgetLogMapper extends BaseMapper<SysUserForgetLogEnt> {
}
package pps.core.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.system.entity.SysUserImportLogDetailEnt;
@Repository(value = "pps.core.system.mapper.SysUserImportLogDetailMapper")
public interface SysUserImportLogDetailMapper extends BaseMapper<SysUserImportLogDetailEnt> {
}
package pps.core.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.system.entity.SysUserImportLogEnt;
@Repository(value = "pps.core.system.mapper.SysUserImportLogMapper")
public interface SysUserImportLogMapper extends BaseMapper<SysUserImportLogEnt> {
}
......@@ -37,9 +37,7 @@ public class PpsCoreSystemModule extends XModule {
XProviderManager.setDefaultImplement(context, XSsoProvider.class, PpsSsoProviderImpl.class);
XProviderManager.setDefaultImplement(context, XSessionInjectProvider.class, PpsUserSessionInjectProviderImpl.class);
//配置信息 自定义实现类
//XProviderManager.setDefaultImplement(context, XConfigProvider.class, PpsConfigProviderImpl.class);
ManifestComponentInfoHelper.init(this.getClass().getClassLoader());
SysDictionaryMapper dictionaryMapper = context.getBean(SysDictionaryMapper.class);
//初始化字典缓存
//查询所有alias不为空的
......@@ -85,9 +83,7 @@ public class PpsCoreSystemModule extends XModule {
}
}
}
dictIds = sysDictionaryChilds.stream().map(p -> {
return p.getId();
}).distinct().collect(Collectors.toList());
dictIds = sysDictionaryChilds.stream().map(p -> p.getId()).distinct().collect(Collectors.toList());
size = dictIds.size();
}
//放入到缓存redis
......@@ -97,8 +93,6 @@ public class PpsCoreSystemModule extends XModule {
SysDictionaryCache.deleteCache(context, key);
SysDictionaryCache.set(context, key, sysDictionaryCaches);
}
XThreadHelper.async(() -> {
this.fixDicPath(context);
});
......@@ -108,14 +102,9 @@ public class PpsCoreSystemModule extends XModule {
private void fixDicPath(XContext context) {
SysDictionaryMapper mapper = context.getBean(SysDictionaryMapper.class);
List<SysDictionaryEnt> sysDictionaryEnts = mapper.selectList(new QueryWrapper<>());
//字典根
// Optional<SysDictionaryEnt> root = sysDictionaryEnts.stream().filter(item -> Strings.isNullOrEmpty(item.getPid()) && item.getId().equals("1")).findFirst();
// if (!root.isPresent()) {
// return;
// }
final Map<String, SysDictionaryEnt> dics = sysDictionaryEnts.stream().collect(Collectors.toMap(SysDictionaryEnt::getId, Function.identity()));
StringBuilder sb = new StringBuilder();
sysDictionaryEnts.stream().forEach(item -> {
sysDictionaryEnts.forEach(item -> {
sb.setLength(0);
if (Strings.isNullOrEmpty(item.getPid())) {
return;
......
......@@ -22,34 +22,6 @@ public class PpsPermissionProviderImpl implements XPermissionProvider {
return checkPermission(context, actionDefine.getPermission().getCodes(),
actionDefine.getPermission().getMatchMode(),
user);
/*if (matchMode.equals(XMatchModeDict.Any)) {
String missPermission = null;
for (String permission : codes) {
if (RolePermissionCache.exist(context, user.getId(), permission)) {
context.getLogger().debug("permission any,exist:{}", permission);
context.getLogger().debug("permission any,result ok");
return XServiceResult.OK;
} else {
missPermission = permission;
context.getLogger().debug("permission any,not exist:{}", permission);
}
}
context.getLogger().debug("permission any,result deny");
return XServiceResult.error(XError.Deny.getCode(), "访问被拒绝,未授权[" + missPermission + "]");
} else {
for (String permission : codes) {
if (RolePermissionCache.exist(context, user.getId(), permission)) {
context.getLogger().debug("permission all,exist:{}", permission);
} else {
context.getLogger().debug("permission all,not exist:{}", permission);
context.getLogger().debug("permission all,result deny");
return XServiceResult.error(XError.Deny.getCode(), "访问被拒绝,未授权[" + permission + "]");
}
}
context.getLogger().info("permission all,result ok");
return XServiceResult.OK;
}*/
}
@Override
......
......@@ -182,7 +182,7 @@ public class PpsUserSessionInjectProviderImpl implements XSessionInjectProvider
}
if (user.getOrgId() == LOGIN_FLAG_SIMULATE) {
if (user.getOrgId().equals(LOGIN_FLAG_SIMULATE)) {
session.setDevops(1);
} else {
SystemUserRoleRelService roleRelService = context.getBean(SystemUserRoleRelService.class);
......
......@@ -10,13 +10,14 @@ import pps.core.common.session.PpsUserSession;
import pps.core.common.utils.VerificationCode;
import pps.core.system.cache.LoginVerCodeCache;
import pps.core.system.entity.SysUserEnt;
import pps.core.system.entity.SysUserForgetLogEnt;
import pps.core.system.entity.SysUserLoginLogEnt;
import pps.core.system.error.LoginError;
import pps.core.system.mapper.SysUserForgetLogMapper;
import pps.core.system.mapper.SysUserLoginLogMapper;
import pps.core.system.mapper.SysUserMapper;
import pps.core.system.service.data.sys_login.*;
import pps.core.system.service.data.sys_login.LoginByAccountInput;
import pps.core.system.service.data.sys_login.LoginByAccountOutput;
import pps.core.system.service.data.sys_login.LoginBySimulateOutput;
import pps.core.system.service.data.sys_login.VerificationCodeInput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
......@@ -206,30 +207,6 @@ public class LoginService {
userLoginLogMapper.insert(logEnt);
}
private XSingleResult<SysUserEnt> checkForgetAccount(XContext context, String loginName) {
SysUserMapper mapper = context.getBean(SysUserMapper.class);
QueryWrapper<SysUserEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SysUserEnt::getLoginName, loginName);
SysUserEnt sysUserEnt = mapper.selectOne(queryWrapper);
if (sysUserEnt == null) {
insertForgetError(context, loginName);
Long count = getForgetErrorTimes(context);
throw new XServiceException(1000, "用户名错误,还剩" + (5 - count) + "次机会");
}
return XSingleResult.success(sysUserEnt);
}
private void insertForgetError(XContext context, String loginName) {
//记录登录日志错误信息
SysUserForgetLogMapper userForgetLogMapper = context.getBean(SysUserForgetLogMapper.class);
SysUserForgetLogEnt logEnt = new SysUserForgetLogEnt();
logEnt.setId(UUID.randomUUID().toString());
logEnt.setIpAddress(context.getWebRequest().getClientIp());
logEnt.setLoginName(loginName);
logEnt.setCreateTime(new Date());
userForgetLogMapper.insert(logEnt);
}
private Long getErrorTimes(XContext context, String loginName, SysUserEnt sysUserEnt) {
SysUserLoginLogMapper userLoginLogMapper = context.getBean(SysUserLoginLogMapper.class);
QueryWrapper<SysUserLoginLogEnt> queryWrapper = new QueryWrapper<>();
......@@ -244,13 +221,4 @@ public class LoginService {
}
return count;
}
private Long getForgetErrorTimes(XContext context) {
SysUserForgetLogMapper userLoginLogMapper = context.getBean(SysUserForgetLogMapper.class);
QueryWrapper<SysUserForgetLogEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SysUserForgetLogEnt::getIpAddress, context.getWebRequest().getClientIp());
queryWrapper.lambda().ge(SysUserForgetLogEnt::getCreateTime, XDateUtils.addMunites(new Date(), -5));
Long count = userLoginLogMapper.selectCount(queryWrapper);
return count;
}
}
\ No newline at end of file
......@@ -20,8 +20,6 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static pps.core.system.error.OrganizationError.PARAM_EMPTY;
@XText("组织机构接口")
@XService
public class SysOrganizationCloudServiceImpl implements SysOrganizationCloudService {
......@@ -69,24 +67,6 @@ public class SysOrganizationCloudServiceImpl implements SysOrganizationCloudServ
return XSingleResult.success(output);
}
@Override
public XSingleResult<GetSysOrganizationViewOutput> getOrganizationBySubOuId(XContext context, GetSysOrganizationViewInput input) {
if (input.getId() == null) {
return XSingleResult.error(context, PARAM_EMPTY);
}
SysOrganizationRelMapper mapper = context.getBean(SysOrganizationRelMapper.class);
QueryWrapper<SysOrganizationRelEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SysOrganizationRelEnt::getOuId, input.getId());
queryWrapper.lambda().lt(SysOrganizationRelEnt::getEffectTime, new Date());
queryWrapper.lambda().gt(SysOrganizationRelEnt::getEndTime, new Date());
SysOrganizationRelEnt relEnt = mapper.selectOne(queryWrapper);
SysOrganizationMapper orgMapper = context.getBean(SysOrganizationMapper.class);
SysOrganizationEnt sysOrganizationEnt = orgMapper.selectById(relEnt.getParentOuId());
GetSysOrganizationViewOutput output = new GetSysOrganizationViewOutput();
XCopyUtils.copyObject(sysOrganizationEnt, output);
return XSingleResult.success(output);
}
@XText("根据用户id获取用户组织机构")
public XListResult<OuIdAndOutNameOutput> getOrgListByUserId(XContext context, QueryUserIdInput input) {
SysUserOrganizationRelViewMapper mapper = context.getBean(SysUserOrganizationRelViewMapper.class);
......
package pps.core.system.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.util.CollectionUtils;
import pps.cloud.system.service.SystemDictionaryService;
import pps.cloud.system.service.data.sys_dictionary.QuerySysDictionaryViewInput;
import pps.cloud.system.service.data.sys_dictionary.QuerySysDictionaryViewOutput;
import pps.core.common.session.PpsUserSession;
import pps.core.common.utils.ExportExcelUtils;
import pps.core.common.utils.ImportExcelUtils;
import pps.core.common.utils.MD5Util;
import pps.core.system.constant.SysOrganizationCode;
import pps.core.system.entity.*;
import pps.core.system.mapper.*;
import pps.core.system.service.data.sys_user_import_log.*;
import pps.core.system.utils.UserInfoUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.tool.XStorageTool;
import xstartup.base.util.XCopyUtils;
import xstartup.base.util.XDateUtils;
import xstartup.base.util.XStringUtils;
import xstartup.core.base.helper.XThreadHelper;
import xstartup.data.*;
import xstartup.error.XError;
import xstartup.feature.api.annotation.XApiAnonymous;
import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiPost;
import xstartup.feature.api.annotation.XApiUpload;
import xstartup.feature.mybatis.helper.XMapperHelper;
import java.io.InputStream;
import java.util.*;
@XText("用户批量导入管理")
@XService
public class SysUserImportLogService {
private HashMap<Integer, Boolean> isNeedNotEmptyMap = new HashMap<>();
@XText("查询用户批量导入列表")
@XApiGet
public XPageResult<QuerySysUserImportLogViewOutput> querySysUserImportLogViewPage(XContext context, QuerySysUserImportLogViewInput input) {
SysUserImportLogMapper mapper = context.getBean(SysUserImportLogMapper.class);
QueryWrapper<SysUserImportLogEnt> queryWrapper = new QueryWrapper<>();
if (input.getStatus() != null) {
queryWrapper.lambda().eq(SysUserImportLogEnt::getStatus, input.getStatus());
}
if (StringUtils.isNotBlank(input.getOuId())) {
queryWrapper.lambda().eq(SysUserImportLogEnt::getOuId, input.getOuId());
}
if (StringUtils.isNotBlank(input.getStartDataDate())) {
queryWrapper.lambda().ge(SysUserImportLogEnt::getCreateTime, input.getStartDataDate());
}
if (StringUtils.isNotBlank(input.getEndDataDate())) {
queryWrapper.lambda().le(SysUserImportLogEnt::getCreateTime, input.getEndDataDate());
}
if (StringUtils.isNotBlank(input.getCreateByName())) {
queryWrapper.lambda().like(SysUserImportLogEnt::getCreateByName, input.getCreateByName());
}
queryWrapper.lambda().orderByDesc(SysUserImportLogEnt::getCreateTime);
XPageResult<QuerySysUserImportLogViewOutput> query = XMapperHelper.query(mapper, input, queryWrapper, QuerySysUserImportLogViewOutput.class);
return query;
}
@XApiPost
@XText("删除油品信息")
public XServiceResult deleteBaseOilType(XContext context, DeleteSysUserImportLogViewInput input) {
SysUserImportLogMapper mapper = context.getBean(SysUserImportLogMapper.class);
QueryWrapper<SysUserImportLogEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SysUserImportLogEnt::getId, input.getId());
SysUserImportLogEnt entity = mapper.selectOne(queryWrapper);
if (entity == null) {
return XServiceResult.error(context, XError.NotFound);
}
//使用逻辑删除
PpsUserSession session = context.getSession(PpsUserSession.class);
entity.setModifyById(session.getId());
entity.setModifyByName(session.getUserName());
entity.setModifyTime(new Date());
entity.setIsDelete(0);
mapper.updateById(entity);
return XServiceResult.OK;
}
@XText("根据日志id,查询用户批量导入数据列表")
@XApiGet
public XPageResult<QuerySysUserImportLogDetailOutput> querySysUserImportUserDetailViewPage(XContext context, QuerySysUserImportLogDetailInput input) {
SysUserImportLogDetailMapper mapper = context.getBean(SysUserImportLogDetailMapper.class);
SysUserImportLogDetailEnt ent = XCopyUtils.copyNewObject(input, SysUserImportLogDetailEnt.class);
QueryWrapper<SysUserImportLogDetailEnt> queryWrapper = setQueryWrapper(ent);
XPageResult<QuerySysUserImportLogDetailOutput> query = XMapperHelper.query(mapper, input, queryWrapper, QuerySysUserImportLogDetailOutput.class);
return query;
}
@XText("导出用户信息数据")
@XApiGet
public XFileResult exportSysUserImportLogDetailData(XContext context, GetSysUserImportLogDetailInput input) {
try {
List<SysUserImportLogDetailEnt> sysUserImportLogDetailEnts = new ArrayList<>();
String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/用户信息.xlsx");
String templateFilePath = "template/exportSysUserImportLogDetailTemplate.xlsx";
if (input.getType() != null && input.getType() == 1) {//导出模板
SysUserImportLogDetailEnt example = new SysUserImportLogDetailEnt();
example.setOuName("国家石油天然气管网集团有限公司");
example.setLoginName("zhangsan");
example.setIamLoginName("zhangsan");
example.setUserCode("userCode");
example.setUserName("张三");
example.setPassword("111111");
example.setIsOuter("是");
example.setIsInner("否");
example.setDuty("董事长");
example.setPhone("13333333333");
example.setEmail("example@example.com");
example.setPostalCode("100010");
example.setAddress("北京市");
example.setUserId("zhangsan");
sysUserImportLogDetailEnts.add(example);
} else {
templateFilePath = "template/exportSysUserImportLogDetailMsgTemplate.xlsx";
SysUserImportLogDetailMapper mapper = context.getBean(SysUserImportLogDetailMapper.class);
SysUserImportLogDetailEnt ent = XCopyUtils.copyNewObject(input, SysUserImportLogDetailEnt.class);
QueryWrapper<SysUserImportLogDetailEnt> queryWrapper = setQueryWrapper(ent);
sysUserImportLogDetailEnts = mapper.selectList(queryWrapper);
}
if (!CollectionUtils.isEmpty(sysUserImportLogDetailEnts)) {
Map<String, Object> params = new HashMap<>();
params.put("list", sysUserImportLogDetailEnts);
InputStream templateInputStream = this.getClass().getClassLoader().getResourceAsStream(templateFilePath);
byte[] excelContent = ExportExcelUtils.genSingleExcelFileData(templateInputStream, params);
ExportExcelUtils.outputFileData(excelContent, fileSavePath);
return XFileResult.success(XFileType.APPLICATION_XLSX, fileSavePath);
} else {
return XFileResult.error(200, "暂无数据导出");
}
} catch (Exception ex) {
context.getLogger().error("导出出错", ex);
return XFileResult.error(500, "导出失败");
}
}
@XText("导入用户信息数据")
@XApiUpload
public XServiceResult importSysUserImportLogDetailData(XContext context, ImportSysUserImportLogDetailInput input) {
try {
if (input.getFile() == null)
return XServiceResult.error(500, "未获取上传文件");
PpsUserSession session = context.getSession(PpsUserSession.class);
SysUserImportLogMapper mapper = context.getBean(SysUserImportLogMapper.class);
SysUserImportLogEnt logEnt = new SysUserImportLogEnt();
logEnt.setId(UUID.randomUUID().toString());
logEnt.setOuId(session.getOuId());
logEnt.setOuName(session.getOuName());
logEnt.setCreateById(session.getId());
logEnt.setCreateByName(session.getUserName());
logEnt.setCreateTime(new Date());
logEnt.setIsDelete(1);
List<SysUserImportLogDetailEnt> successEntList = new ArrayList<>();
List<SysUserImportLogDetailEnt> errorEntList = new ArrayList<>();
this.importExcelData(context, input, successEntList, errorEntList);
if (CollectionUtils.isEmpty(successEntList))
logEnt.setStatus(2);
if (CollectionUtils.isEmpty(errorEntList))
logEnt.setStatus(0);
if (!CollectionUtils.isEmpty(errorEntList) && !CollectionUtils.isEmpty(successEntList))
logEnt.setStatus(1);
mapper.insert(logEnt);
SysUserImportLogDetailMapper detailMapper = context.getBean(SysUserImportLogDetailMapper.class);
List<QuerySysDictionaryViewOutput> dictList = getDictList(context, "DUTY");
SysUserMapper userMapper = context.getBean(SysUserMapper.class);
SysUserOrganizationRelMapper userOrganizationRelMapper = context.getBean(SysUserOrganizationRelMapper.class);
SysUserRoleRelMapper userRoleRelMapper = context.getBean(SysUserRoleRelMapper.class);
XThreadHelper.async(() -> {
for (int i = 0; i < successEntList.size(); i++) {
Date currentDate = new Date();
SysUserImportLogDetailEnt record = successEntList.get(i);
record.setId(UUID.randomUUID().toString());
record.setLogId(logEnt.getId());
record.setCreateById(session.getId());
record.setCreateByName(session.getUserName());
record.setCreateTime(currentDate);
detailMapper.insert(record);
//插入用户
SysUserEnt sysUserEnt = XCopyUtils.copyNewObject(record, SysUserEnt.class);
if (record.getIsInner().equals("是"))
sysUserEnt.setIsInner(1);
else
sysUserEnt.setIsInner(2);
if (record.getIsOuter().equals("是"))
sysUserEnt.setIsOuter(1);
else
sysUserEnt.setIsOuter(2);
sysUserEnt.setEndDate(XDateUtils.tryParse("2099-12-31"));
sysUserEnt.setIsSuperAdmin(0);
if (XStringUtils.isNotEmpty(sysUserEnt.getPassword()))
sysUserEnt.setPassword(MD5Util.encryptPassword(sysUserEnt.getPassword()));
else
sysUserEnt.setPassword("2e7832f9c3a0ca243c559017c07cceed");
sysUserEnt.setDuty(getDictKey(sysUserEnt.getDuty(), dictList));
userMapper.insert(sysUserEnt);
//插入用户组织机构关系
SysUserOrganizationRelEnt sysUserOrganizationRelEnt = new SysUserOrganizationRelEnt();
sysUserOrganizationRelEnt.setId(UUID.randomUUID().toString());
sysUserOrganizationRelEnt.setOuId(record.getOuId());
sysUserOrganizationRelEnt.setUserId(sysUserEnt.getId());
sysUserOrganizationRelEnt.setCreateById(session.getId());
sysUserOrganizationRelEnt.setCreateByName(session.getUserName());
sysUserOrganizationRelEnt.setCreateTime(currentDate);
sysUserOrganizationRelEnt.setEffectTime(new Date());
sysUserOrganizationRelEnt.setEndTime(XDateUtils.tryParse("2099-12-31"));
userOrganizationRelMapper.insert(sysUserOrganizationRelEnt);
//插入用户角色关系
QueryWrapper<SysUserRoleRelEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SysUserRoleRelEnt::getUserId, record.getUserIdAct());
List<SysUserRoleRelEnt> userRoleRelEnts = userRoleRelMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(userRoleRelEnts)) {
userRoleRelEnts.stream().forEach(item -> {
item.setId(UUID.randomUUID().toString());
item.setUserId(sysUserEnt.getId());
userRoleRelMapper.insert(item);
});
}
}
for (int i = 0; i < errorEntList.size(); i++) {
Date currentDate = new Date();
SysUserImportLogDetailEnt record = errorEntList.get(i);
record.setId(UUID.randomUUID().toString());
record.setLogId(logEnt.getId());
record.setCreateById(session.getId());
record.setCreateByName(session.getUserName());
record.setCreateTime(currentDate);
detailMapper.insert(record);
}
});
return XServiceResult.OK;
} catch (Exception ex) {
context.getLogger().error("导入失败", ex);
return XServiceResult.error(500, "导入失败:" + ex.toString().replace("java.lang.Exception:", ""));
}
}
private void importExcelData(XContext context, ImportSysUserImportLogDetailInput param,
List<SysUserImportLogDetailEnt> successEntList, List<SysUserImportLogDetailEnt> errorEntList) throws Exception {
String fileName = param.getFile().getFileName();
InputStream input = param.getFile().getInputStream();
this.checkError(!fileName.endsWith(".xlsx"), "导入模板文件格式不正确,请核对(文档格式应为.xlsx)");
Workbook wb = new XSSFWorkbook(input);
Sheet sheet = wb.getSheetAt(0);
Iterator<Row> rows = sheet.rowIterator();
this.checkError(rows == null || !rows.hasNext(), "未导入任何数据");
DataFormatter formatter = new DataFormatter();
List<String> tempRowTitle = createTitles();
Row titleRowFromExcel = rows.next();
String titleErrorMessage = "";
isNeedNotEmptyMap.clear();
for (int i = 0; i < tempRowTitle.size(); i++) {
String titleFormExcel = formatter.formatCellValue(titleRowFromExcel.getCell(i)).trim();
isNeedNotEmptyMap.put(i, titleFormExcel.startsWith("*"));
titleFormExcel = titleFormExcel.replace("*", "");
if (!tempRowTitle.get(i).equals(titleFormExcel)) {
titleErrorMessage = titleErrorMessage.concat("第" + (i + 1) + "列表头不正确应为“" + tempRowTitle.get(i) + "”,");
}
}
this.checkError(StringUtils.isNotBlank(titleErrorMessage), titleErrorMessage + "请根据模板修改;");
SysOrganizationViewMapper mapper = context.getBean(SysOrganizationViewMapper.class);
SysUserMapper userMapper = context.getBean(SysUserMapper.class);
QueryWrapper<SysUserEnt> userEntQueryWrapper = new QueryWrapper<>();
while (rows.hasNext()) {
SysUserImportLogDetailEnt resultItem = new SysUserImportLogDetailEnt();
resultItem.setId(UUID.randomUUID().toString());
resultItem.setStatus(0);
resultItem.setMsg("插入成功");
Row row = rows.next();
if (ImportExcelUtils.isRowEmpty(row)) {
resultItem.setMsg("数据不能为空;");
resultItem.setStatus(1);
errorEntList.add(resultItem);
continue;
}
// String dateErrorMessage = this.checkEmptyData(row, tempRowTitle);
// if (StringUtils.isNotBlank(dateErrorMessage)) {
// resultItem.setMsg(dateErrorMessage);
// resultItem.setStatus(1);
// errorEntList.add(resultItem);
// continue;
// }
StringBuilder errorMessageBuilder = new StringBuilder();
for (int i = 0; i < tempRowTitle.size(); i++) {
Cell cell = row.getCell(i);
String cellText = formatter.formatCellValue(cell).trim();
switch (i) {
case 0: //组织机构名称
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 0)) ;
errorMessageBuilder.append("组织机构名称不能为空;");
} else {
SysOrganizationView record = new SysOrganizationView();
record.setOuName(cellText);
record.setIsDeleted(SysOrganizationCode.NORMAL);
record.setEndTime(new Date());
List<SysOrganizationView> viewList = mapper.selectOrganizationEffectiveByOuName(record);
resultItem.setOuName(cellText);
if (viewList.size() > 1)
errorMessageBuilder.append("组织机构名称匹配多个;");
else if (viewList.size() == 1) {
resultItem.setOuId(viewList.get(0).getId());
} else
errorMessageBuilder.append("组织机构未匹配;");
}
} catch (Exception ex) {
}
break;
case 1: //登录账户
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 1))
errorMessageBuilder.append("登录账号不能为空;");
} else {
userEntQueryWrapper.clear();
userEntQueryWrapper.lambda().eq(SysUserEnt::getLoginName, cellText);
List<SysUserEnt> userEntList = userMapper.selectList(userEntQueryWrapper);
resultItem.setLoginName(cellText);
if (userEntList.size() > 0)
errorMessageBuilder.append("登录账号匹配多个;");
}
} catch (Exception ex) {
}
break;
case 2: //IAM登录账户
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 2))
errorMessageBuilder.append("IAM登录账号不能为空;");
} else {
userEntQueryWrapper.clear();
userEntQueryWrapper.lambda().eq(SysUserEnt::getIamLoginName, cellText);
List<SysUserEnt> userEntList = userMapper.selectList(userEntQueryWrapper);
resultItem.setIamLoginName(cellText);
if (userEntList.size() > 0)
errorMessageBuilder.append("IAM登录账号匹配多个;");
}
} catch (Exception ex) {
}
break;
case 3: //员工编码
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 3))
errorMessageBuilder.append("员工编码不能为空;");
} else {
resultItem.setUserCode(cellText);
}
} catch (Exception ex) {
}
break;
case 4: //用户姓名
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 4))
errorMessageBuilder.append("用户姓名不能为空;");
} else {
resultItem.setUserName(cellText);
}
} catch (Exception ex) {
}
break;
case 5: //登录密码
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 5))
errorMessageBuilder.append("登录密码不能为空;");
} else {
resultItem.setPassword(cellText);
}
} catch (Exception ex) {
}
break;
case 6: //内网访问
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 6))
errorMessageBuilder.append("内网访问不能为空;");
} else {
resultItem.setIsInner(cellText);
}
} catch (Exception ex) {
}
break;
case 7: //外网访问
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 7))
errorMessageBuilder.append("外网访问不能为空;");
} else {
resultItem.setIsOuter(cellText);
}
} catch (Exception ex) {
}
break;
case 8: //职务
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 8))
errorMessageBuilder.append("职务不能为空;");
} else {
resultItem.setDuty(cellText);
}
} catch (Exception ex) {
}
break;
case 9: //邮编
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 9))
errorMessageBuilder.append("邮编不能为空;");
} else {
resultItem.setPostalCode(cellText);
}
} catch (Exception ex) {
}
break;
case 10: //手机号
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 10))
errorMessageBuilder.append("手机号不能为空;");
} else {
resultItem.setPhone(UserInfoUtil.encrypt(cellText));
}
} catch (Exception ex) {
}
break;
case 11: //用户邮箱
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 11))
errorMessageBuilder.append("用户邮箱不能为空;");
} else {
resultItem.setEmail(cellText);
}
} catch (Exception ex) {
}
break;
case 12: //通讯地址
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 12))
errorMessageBuilder.append("通讯地址不能为空;");
} else {
resultItem.setAddress(cellText);
}
} catch (Exception ex) {
}
break;
case 13: //角色用户id
try {
if (StringUtils.isBlank(cellText)) {
if (this.checkEmptyData(row, tempRowTitle, 13))
errorMessageBuilder.append("角色用户IAM账户不能为空;");
} else {
userEntQueryWrapper.clear();
userEntQueryWrapper.lambda().eq(SysUserEnt::getIamLoginName, cellText);
List<SysUserEnt> userEntList = userMapper.selectList(userEntQueryWrapper);
resultItem.setUserId(cellText);
if (userEntList.size() == 0)
errorMessageBuilder.append("角色用户IAM账户未匹配;");
else
resultItem.setUserIdAct(userEntList.get(0).getId());
}
} catch (Exception ex) {
}
break;
default:
break;
}
}
if (errorMessageBuilder.length() > 0) {
resultItem.setMsg(errorMessageBuilder.toString());
resultItem.setStatus(1);
errorEntList.add(resultItem);
} else
successEntList.add(resultItem);
}
}
private List<String> createTitles() {
List<String> titles = new ArrayList<String>();
titles.add("所属单位");
titles.add("登录账号");
titles.add("IAM登录账号");
titles.add("员工编码");
titles.add("用户姓名");
titles.add("登录密码");
titles.add("内网访问");
titles.add("外网访问");
titles.add("职务");
titles.add("邮编");
titles.add("手机号");
titles.add("用户邮箱");
titles.add("通讯地址");
titles.add("角色用户IAM账号");
return titles;
}
private String checkEmptyData(Row row, List<String> tempRowTitle) {
String result = "";
DataFormatter formatter = new DataFormatter();
for (int i = 0; i < isNeedNotEmptyMap.size(); i++) {
Cell cell = row.getCell(i);
Boolean isNeedNotEmpty = isNeedNotEmptyMap.get(i);
Boolean isEmptyValue = StringUtils.isBlank(formatter.formatCellValue(cell));
if (isNeedNotEmpty && isEmptyValue) {
result = result.concat(String.format("“%s”", tempRowTitle.get(i).replace("*", "")));
}
}
if (StringUtils.isNotBlank(result)) {
result = result + "不能为空;";
}
return result;
}
private Boolean checkEmptyData(Row row, List<String> tempRowTitle, int index) {
Boolean isNeed = false;
DataFormatter formatter = new DataFormatter();
Cell cell = row.getCell(index);
Boolean isNeedNotEmpty = isNeedNotEmptyMap.get(index);
Boolean isEmptyValue = StringUtils.isBlank(formatter.formatCellValue(cell));
if (isNeedNotEmpty && isEmptyValue) {
isNeed = true;
}
return isNeed;
}
private void checkError(boolean isError, String errorMessage) throws Exception {
if (isError)
throw new Exception(errorMessage);
}
public QueryWrapper<SysUserImportLogDetailEnt> setQueryWrapper(SysUserImportLogDetailEnt input) {
QueryWrapper<SysUserImportLogDetailEnt> queryWrapper = new QueryWrapper<>();
if (input.getStatus() != null) {
queryWrapper.lambda().eq(SysUserImportLogDetailEnt::getStatus, input.getStatus());
}
if (StringUtils.isNotBlank(input.getLogId())) {
queryWrapper.lambda().eq(SysUserImportLogDetailEnt::getLogId, input.getLogId());
}
queryWrapper.lambda().orderByDesc(SysUserImportLogDetailEnt::getCreateTime);
return queryWrapper;
}
public List<QuerySysDictionaryViewOutput> getDictList(XContext context, String alias) {
SystemDictionaryService dictionaryService = context.getBean(SystemDictionaryService.class);
QuerySysDictionaryViewInput dictInput = new QuerySysDictionaryViewInput();
dictInput.setAlias(alias);
dictInput.setPage(1);
dictInput.setLimit(999);
XListResult<QuerySysDictionaryViewOutput> dictPageResult = dictionaryService.queryChildSysDictionarysByParentAlias(context, dictInput);
dictPageResult.throwIfFail();
return dictPageResult.getResult();
}
public String getDictKey(String dictName, List<QuerySysDictionaryViewOutput> dictList) {
if (StringUtils.isBlank(dictName) || CollectionUtils.isEmpty(dictList)) {
return "";
}
for (QuerySysDictionaryViewOutput dict : dictList) {
if (dict.getDicName().equals(dictName)) {
return dict.getDicKey();
}
}
return "";
}
@XText("更新手机号码")
@XApiPost
@XApiAnonymous
public XServiceResult updateUserPhone(XContext context) {
SysUserMapper sysUserMapper = context.getBean(SysUserMapper.class);
QueryWrapper<SysUserEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().last("where length(phone) = 11");
List<SysUserEnt> sysUserEnts = sysUserMapper.selectList(queryWrapper);
if (!sysUserEnts.isEmpty()) {
sysUserEnts.stream().forEach(item -> {
item.setPhone(UserInfoUtil.encrypt(item.getPhone()));
sysUserMapper.updateById(item);
});
}
return XServiceResult.OK;
}
}
\ No newline at end of file
package pps.core.base.constant;
public class OperationalConstraintConstant {
public static final String OPERATIONAL_TYPE_SAVE = "save_or_submit";
public static final String OPERATIONAL_TYPE_AUDIT = "audit";
public static final String OPERATIONAL_TYPE_APPLY_CHANGE = "apply_change";
}
package pps.core.base.constant;
public class ScadaConstant {
//是否删除 0-未删除 ;1-已删除
public static final Integer IS_DELETE_FLASE = 0;
public static final Integer IS_DELETE_TRUE = 1;
//字段类型 1-静态;2-scada
public static final Integer STATIC_DATA = 1;
public static final Integer SCADA_DATA = 2;
//是否生效
public static final Integer IS_VALID_TRUE = 1;
//全局参数
public static final String IN_PARAM_TYPE_DIC = "1";
//固定值
public static final String IN_PARAM_TYPE_FIXED = "2";
}
......@@ -13,9 +13,6 @@ public class PpsCoreBaseModule extends XModule {
@Override
protected void onStarted(XContext context) {
//XProviderManager.setDefaultImplement(context, XApiAccessLogProvider.class, PpsApiAccessLogProviderImpl.class);
//配置信息 自定义实现类
//XProviderManager.setDefaultImplement(context, XConfigProvider.class, PpsConfigProviderImpl.class);
ManifestComponentInfoHelper.init(this.getClass().getClassLoader());
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment