Commit 5f9e352f by 张祺

增加操作日志记录入库的功能

parent 8539236e
......@@ -49,7 +49,8 @@ public class TaskCtrl {
@ApiOperation("分发任务")
@PostMapping("assign")
public Result assign(@RequestBody TaskAssginParam param) {
return null;
taskService.assignTask(param, SystemUserUtil.getCurrentUserId());
return Result.genOkResult();
}
@ApiOperation("提交任务去审核")
......
......@@ -4,10 +4,12 @@ import com.keymobile.indicators.constant.Constants;
import com.keymobile.indicators.model.entity.dataenter.TaskRule;
import com.keymobile.indicators.result.Result;
import com.keymobile.indicators.service.dataenter.TaskRuleService;
import com.keymobile.indicators.utils.LogManager;
import com.keymobile.indicators.utils.SystemUserUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
......@@ -17,6 +19,7 @@ import java.util.Date;
@Api(tags={"数据填报-任务规则管理"})
@RestController
@RequestMapping(value = "/taskRule")
@Slf4j
public class TaskRuleCtrl {
@Autowired
......@@ -41,6 +44,7 @@ public class TaskRuleCtrl {
@GetMapping("deleteById")
public Result deleteById(@ApiParam(name = "id") @RequestParam("id")Integer id) {
taskRuleService.delete(id);
LogManager.logInfo(Constants.LOG_CONTEXT_API, "删除id={}的任务规则", id);
return Result.genOkResult();
}
......@@ -61,8 +65,10 @@ public class TaskRuleCtrl {
rule.setCreateTime(now);
rule.setCreator(currentUserId);
taskRuleService.createRule(rule);
LogManager.logInfo(Constants.LOG_CONTEXT_API, "创建了规则name={}", rule.getName());
} else {
taskRuleService.updateRule(rule);
LogManager.logInfo(Constants.LOG_CONTEXT_API, "修改id={}, name={} 的任务规则", rule.getId(), rule.getName());
}
result = Result.genOkResult();
}
......
......@@ -5,6 +5,11 @@ package com.keymobile.indicators.constant;
*/
public class Constants {
/**
* 日志---操作日志
*/
public static final String LOG_CONTEXT_API = "indicator.operate";
/** collection Name */
/** collection Name */
......@@ -98,4 +103,6 @@ public class Constants {
*/
public static final int OBJ_TYPE_USER = 2;
}
package com.keymobile.indicators.model.entity.dataenter;
import com.keymobile.indicators.model.entity.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Id;
......@@ -11,6 +13,7 @@ import javax.persistence.Table;
*/
@Data
@Table(name="data_enter_task_record")
@ApiModel("任务审批记录")
public class AuditRecord extends BaseModel {
@Id
......@@ -29,10 +32,12 @@ public class AuditRecord extends BaseModel {
/**
* 操作记录类型
*/
@ApiModelProperty("任务记录类型")
private String recordType;
/**
* 内容描述
*/
@ApiModelProperty("内容描述")
private String description;
}
......@@ -10,21 +10,21 @@ import java.util.List;
@ApiModel("任务下发、分发参数")
public class TaskAssginParam {
@ApiModelProperty("分发的当前任务id")
@ApiModelProperty(value = "分发的当前任务id", required = true)
private String taskId;
@ApiModelProperty("分发后自己是否也需要填写")
@ApiModelProperty(value = "分发后自己是否也需要填写", required = true)
private Boolean needSelfEnter;
@ApiModelProperty("分发填报后是否需要做汇总上报")
@ApiModelProperty(value = "分发填报后是否需要做汇总上报", required = true)
private Boolean needSum;
@ApiModelProperty("选择需要分发的指标")
@ApiModelProperty(value = "选择需要分发的指标", required = true)
private List<String> indIds;
@ApiModelProperty("把任务分发给对象id")
@ApiModelProperty(value = "把任务分发给对象id", required = true)
private List<String> objIds;
@ApiModelProperty("分发对象类型: 1 组织机构 2 人员 3 角色")
@ApiModelProperty(value = "分发对象类型: 1 组织机构 2 人员 3 角色", required = true)
private int objType = 1;
}
package com.keymobile.indicators.model.entity.dataenter;
import com.keymobile.indicators.model.entity.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.*;
......@@ -12,23 +15,28 @@ import java.util.List;
*/
@Data
@Table(name="data_enter_task_rule")
@ApiModel("任务规则")
public class TaskRule extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ApiModelProperty("规则名称")
private String name;
@ApiModelProperty("规则描述")
private String description;
/**
* 任务规则所属类型:1、省 2、市 3、县
*/
@ApiModelProperty("规则类型")
private Integer ruleType;
/**
* 触发类型:1、手动 2、定时
*/
@ApiModelProperty("规则触发类型:1 、手动 2、定时")
private Integer activeType;
/**
......@@ -41,17 +49,35 @@ public class TaskRule extends BaseModel {
private String cronExp;
/**
* 触发类型:1、每
* 触发类型:1、每月 2、每日
*/
private Integer expType;
@ApiModelProperty("触发类型:1、月 2、日")
private Integer exeType;
@ApiModelProperty("触发类型为月的时候,触发月份(1-12月),多个以,分割")
private String exeMonth;
@ApiModelProperty("触发类型为月的时候,触发日, 1-31号")
private String exeDate;
@ApiModelProperty("触发时刻,例如 23:59:59")
private String exeTime;
/**
* 填报时限:天
*/
@ApiModelProperty("填报时限,多少天内填完, > 0")
private Integer timeLimit;
@ApiModelProperty("审核时限,填完后多少天审核完, >= 0")
private Integer auditLimit;
@ApiModelProperty("上报时限,填完后多少天上报完, >= 0")
private Integer submitLimit;
/**
* 填报角色id,多个用,分割
*/
@ApiModelProperty("填报对象,多个用,分割")
private String toRoleIds;
/**
* 上次触发时间
......@@ -59,7 +85,7 @@ public class TaskRule extends BaseModel {
private Date lastActiveTime;
/**
* 关联的数据项
* 关联的指标
*/
@Transient
private List<TaskRuleIndicator> indicators;
......
package com.keymobile.indicators.model.entity.dataenter;
import com.keymobile.indicators.model.entity.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.GeneratedValue;
......@@ -13,6 +15,7 @@ import javax.persistence.Table;
*/
@Data
@Table(name="data_enter_rule_ind")
@ApiModel("填报规则关联指标")
public class TaskRuleIndicator extends BaseModel {
@Id
......@@ -27,20 +30,19 @@ public class TaskRuleIndicator extends BaseModel {
/**
* 指标id
*/
@ApiModelProperty("指标id")
private String indId;
/**
* 指标名称
*/
@ApiModelProperty("指标名称")
private String indName;
/**
* 指标单位
*/
@ApiModelProperty("指标单位")
private String indUnit;
/**
* 指标数量来源:1 Excel导入 2 手工录入
*/
private Integer indSource;
}
......@@ -10,8 +10,6 @@ import java.util.List;
@Mapper
public interface TaskRuleMapper extends BaseMapper<TaskRule> {
void createTaskRule(TaskRule rule);
/**
* 逻辑删除任务规则
* @param id
......
......@@ -91,6 +91,13 @@ public interface TaskService {
List<TaskIndValue> findDefaultValues(String valueTime, List<String> indIds);
/**
* 分发任务
* @param param
* @param userId
*/
void assignTask(TaskAssginParam param, String userId);
/**
* 提交任务
* @param taskId
* @param userId 提交人id
......
......@@ -125,6 +125,37 @@ public class TaskServiceImpl implements TaskService {
@Override
@Transactional(rollbackFor = Exception.class)
public void assignTask(TaskAssginParam param, String userId) {
Task parentTask = getById(param.getTaskId());
List<String> indIds = param.getIndIds();
List<String> objIds = param.getObjIds();
List<TaskIndicator> assignInds = new ArrayList<>();
for (TaskIndicator indicator : parentTask.getIndicators()) {
if (indIds.contains(indicator.getIndId())) {
assignInds.add(indicator);
}
}
int objType = param.getObjType();
List<Task> task = new ArrayList<>();
switch (objType) {
case 1:
//组织
break;
case 2:
//人员
for (String obj : objIds) {
}
break;
case 3:
//角色
break;
}
//TODO 保存任务和关联的指标信息
}
@Override
@Transactional(rollbackFor = Exception.class)
public void submitTask(String taskId, String userId) {
Date now = new Date();
Task task = taskMapper.selectByPrimaryKey(taskId);
......
package com.keymobile.indicators.utils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
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;
/**
* 日志操作工具.
* @author linxu
* @version 1.0
* @date 2020/3/25 11:00
*/
public class LogManager {
/**
* trace.
* @param context context
* @param e e
* @param message message
*/
public static void logTrace(String context, Throwable e, String message) {
Logger logger = LoggerFactory.getLogger(context);
if (logger.isTraceEnabled()) {
logger.trace(message, e);
}
}
/**
* trace.
* @param context context
* @param message message
*/
public static void logTrace(String context, String message) {
logTrace(context, null, message);
}
/**
* debug.
* @param context context
* @param message message
*/
public static void logDebug(String context, String message) {
Logger logger = LoggerFactory.getLogger(context);
if (logger.isDebugEnabled()) {
logger.debug(message);
}
}
/**
* log.
* @param context context
* @param message message
*/
public static void logInfo(String context, String message) {
Logger logger = LoggerFactory.getLogger(context);
if (logger.isInfoEnabled()) {
logger.info(message);
}
}
/**
* info.
* @param context context
* @param message message
* @param objects objects
*/
public static void logInfo(String context, String message, Object... objects) {
Logger logger = LoggerFactory.getLogger(context);
String ip = getIp();
message = message + "; IP: " + ip;
message = StringUtils.replace(message, "{}", "%s");
message = String.format(message, objects);
if (logger.isInfoEnabled()) {
logger.info(message, getUser(), getSessionId(), ip);
}
}
/**
* warning.
* @param context context
* @param e e
* @param message message
*/
public static void logWarning(String context, Throwable e, String message) {
Logger logger = LoggerFactory.getLogger(context);
if (logger.isWarnEnabled()) {
logger.warn(message, e);
}
}
/**
* warning.
* @param context context
* @param message message
*/
public static void logWarning(String context, String message) {
logWarning(context, null, message);
}
/**
* error.
* @param context context
* @param e e
* @param message message
*/
public static void logError(String context, Throwable e, String message) {
Logger logger = LoggerFactory.getLogger(context);
if (logger.isErrorEnabled()) {
logger.error(message, e);
}
}
/**
* error.
* @param context context
* @param message message
*/
public static void logError(String context, String message) {
Logger logger = LoggerFactory.getLogger(context);
if (logger.isErrorEnabled()) {
logger.error(message);
}
}
/**
* 获取sessionId.
* @return sessionId
*/
public static String getSessionId() {
RequestAttributes attrs = RequestContextHolder.getRequestAttributes();
if (attrs != null) {
return attrs.getSessionId();
}
return "NO_SESSION";
}
/**
* 获取IP.
* @return ip
*/
public static String getIp() {
RequestAttributes attrs = RequestContextHolder.getRequestAttributes();
if (attrs != null) {
HttpServletRequest request = ((ServletRequestAttributes)attrs).getRequest();
return IpUtil.getIpAddr(request);
}
return "";
}
/**
* 获取用户.
* @return user
*/
public static String getUser() {
return SystemUserUtil.getCurrentUser();
}
}
package com.keymobile.indicators.utils;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
/**
* 获取当前登录用户信息
*/
public class SystemUserUtil {
/**
* 获取当前登录用户名和id
* @return
*/
public static String getCurrentUser() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String user = "NO_USER";
if (auth != null) {
user = auth.getName();
}
return user;
}
/**
* 获取当前登录用户id
* @return
*/
public static String getCurrentUserId() {
//TODO 待实现
return "1";
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String userId = "NO_USER";
if (auth != null) {
Object obj = auth.getPrincipal();
if (obj != null) {
UserDetails userDetails = (UserDetails) obj;
String userNameWithIdAttached = userDetails.getUsername();
userId = userNameWithIdAttached.split(":")[1];
}
}
return userId;
}
/**
* 获取当前登录用户名
* @return
*/
public static String getCurrentUserName() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String userId = "NO_USER";
if (auth != null) {
Object obj = auth.getPrincipal();
if (obj != null) {
if (obj instanceof String) {
userId = obj.toString();
} else {
UserDetails userDetails = (UserDetails) obj;
String userNameWithIdAttached = userDetails.getUsername();
userId = userNameWithIdAttached.split(":")[0];
}
}
}
return userId;
}
/**
......
......@@ -53,4 +53,9 @@ security:
mybatis:
config-location: classpath:/mybatis/mybatis-config.xml
mapper-locations: classpath:/mybatis/mapping/*.xml
type-aliases-package: com.keymobile.indicators.model.entity
\ No newline at end of file
type-aliases-package: com.keymobile.indicators.model.entity
logging:
level:
com.keymobile.indicators: debug
config: classpath:logback-custom.xml
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration >
<springProperty scope="context" name="spring.datasource.url" source="spring.datasource.url"/>
<springProperty scope="context" name="spring.datasource.username" source="spring.datasource.username"/>
<springProperty scope="context" name="spring.datasource.password" source="spring.datasource.password"/>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %X{user} %X{session} %-5level %logger{5} - %msg%n</pattern>
</encoder>
</appender>
<appender name="db" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource
class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>${spring.datasource.url}</url>
<user>${spring.datasource.username}</user>
<password>${spring.datasource.password}</password>
</connectionSource>
</appender>
<logger name="indicator.operate">
<appender-ref ref="db" />
</logger>
<root level="INFO">
<appender-ref ref="stdout" />
</root>
</configuration>
......@@ -2,15 +2,6 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.keymobile.indicators.model.mapper.indicators.TaskRuleMapper">
<insert id="createTaskRule" useGeneratedKeys="true" keyProperty="id" parameterType="com.keymobile.indicators.model.entity.dataenter.TaskRule">
insert into data_enter_task_rule (id,name,description,rule_type,active_type,
sch_id,cron_exp,exp_type,time_limit,to_role_ids,last_active_time,
state,creator,updater,create_time,update_time)
values (#{id}, #{name},#{description}, #{ruleType}, #{activeType},
#{schId},#{cronExp}, #{expType}, #{timeLimit}, #{toRoleIds}, #{lastActiveTime},
#{state}, #{creator}, #{updater}, #{createTime}, #{updateTime}
)
</insert>
<delete id="deleteById" parameterType="java.lang.Integer">
update data_enter_task_rule
......
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