推送日志功能

This commit is contained in:
钱涛 2024-11-21 11:54:47 +08:00
parent 7ea1e5fc80
commit 119d9f3cd8
11 changed files with 864 additions and 29 deletions

View File

@ -0,0 +1,84 @@
package com.engine.salary.entity.push.po;
import com.engine.hrmelog.annotation.ElogTransform;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.Date;
/**
* 数据推送配置
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PushRecordDetailPO {
@ElogTransform(name = "id")
private Long id;
/**
* 推送记录id
*/
@ElogTransform(name = "推送记录id")
private Long recordId;
/**
* 核算人员id
*/
@ElogTransform(name = "核算人员id")
private Long acctEmpId;
/**
* 执行状态
*/
@ElogTransform(name = "执行状态")
private Integer status;
/**
* 执行sql
*/
@ElogTransform(name = "执行sql")
private String execute;
/**
* 创建时间
*/
@ElogTransform(name = "创建时间")
private Date createTime;
/**
* 创建人
*/
@ElogTransform(name = "创建人")
private Long creator;
/**
* 是否已删除0未删除1已删除
*/
@ElogTransform(name = "是否已删除。0未删除、1已删除")
private Integer deleteType;
/**
* 租户ID
*/
@ElogTransform(name = "租户ID")
private String tenantKey;
/**
* 更新时间
*/
@ElogTransform(name = "更新时间")
private Date updateTime;
//主键id集合
private Collection<Long> ids;
}

View File

@ -0,0 +1,89 @@
package com.engine.salary.entity.push.po;
import com.engine.hrmelog.annotation.ElogTransform;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.Date;
/**
* 数据推送配置
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PushRecordPO {
@ElogTransform(name = "")
private Long id;
/**
* 记录名
*/
@ElogTransform(name = "记录名")
private String name;
/**
* 核算记录id
*/
@ElogTransform(name = "核算记录id")
private Long acctRecordId;
/**
* 推送配置id
*/
@ElogTransform(name = "推送配置id")
private Long settingId;
/**
* 推送状态
*/
@ElogTransform(name = "推送状态")
private Integer status;
/**
* 推送类型
*/
@ElogTransform(name = "推送类型")
private Integer type;
/**
* 创建时间
*/
@ElogTransform(name = "创建时间")
private Date createTime;
/**
* 创建人
*/
@ElogTransform(name = "创建人")
private Long creator;
/**
* 是否已删除0未删除1已删除
*/
@ElogTransform(name = "是否已删除。0未删除、1已删除")
private Integer deleteType;
/**
* 租户ID
*/
@ElogTransform(name = "租户ID")
private String tenantKey;
/**
* 更新时间
*/
@ElogTransform(name = "更新时间")
private Date updateTime;
//主键id集合
private Collection<Long> ids;
}

View File

@ -6,26 +6,33 @@ import java.util.Arrays;
import java.util.Objects;
/**
* 推送数据来源
* 推送记录状态
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public enum PushItemSourceEnum implements BaseEnum<Integer> {
public enum PushRecordStatusEnum implements BaseEnum<Integer> {
NUMBER(1, "待推送", 87625) {
},
TEXT(2, "文本", 85393) {
},
YEAR(4, "日期文本-年", 85393) {
},
YEAR_MONTH(5, "日期文本-年月", 85393) {
},
YEAR_MONTH_DAY(6, "日期文本-年月日", 85393) {
};
EMPLOYEE_INFO(0, "员工基本信息", 85366),
SALARY_ACCT_EMPLOYEE(1, "核算信息", 85368),
SALARY_CYCLE(2, "核算日期", 85368),
SALARY_ITEM(3, "薪资项目", 84960);
private int value;
private String defaultLabel;
private int labelId;
PushItemSourceEnum(int value, String defaultLabel, int labelId) {
PushRecordStatusEnum(int value, String defaultLabel, int labelId) {
this.value = value;
this.defaultLabel = defaultLabel;
this.labelId = labelId;
@ -46,22 +53,22 @@ public enum PushItemSourceEnum implements BaseEnum<Integer> {
return labelId;
}
public static PushItemSourceEnum parseByValue(int value) {
for (PushItemSourceEnum salaryDataSourceEnum : PushItemSourceEnum.values()) {
public static PushRecordStatusEnum parseByValue(int value) {
for (PushRecordStatusEnum salaryDataSourceEnum : PushRecordStatusEnum.values()) {
if (Objects.equals(salaryDataSourceEnum.getValue(), value)) {
return salaryDataSourceEnum;
}
}
return null;
return TEXT;
}
public static String getDefaultLabelByValue(Integer value) {
if (value == null) {
return "";
}
PushItemSourceEnum[] enumAry = PushItemSourceEnum.values();
for(int i = 0; i < Arrays.asList(enumAry).size(); i++){
if (Integer.valueOf(enumAry[i].getValue()).equals(value)) {
PushRecordStatusEnum[] enumAry = PushRecordStatusEnum.values();
for (int i = 0; i < Arrays.asList(enumAry).size(); i++) {
if (enumAry[i].getValue().equals(value)) {
return enumAry[i].getDefaultLabel();
}
}

View File

@ -0,0 +1,72 @@
package com.engine.salary.mapper.push;
import com.engine.salary.entity.push.po.PushRecordDetailPO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
public interface PushRecordDetailMapper {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<PushRecordDetailPO> listAll();
/**
* 条件查询
*
* @return 返回集合没有返回空List
*/
List<PushRecordDetailPO> listSome(PushRecordDetailPO pushRecordDetail);
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
PushRecordDetailPO getById(Long id);
/**
* 新增忽略null字段
*
* @param pushRecordDetail 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(PushRecordDetailPO pushRecordDetail);
/**
* 修改修改所有字段
*
* @param pushRecordDetail 修改的记录
* @return 返回影响行数
*/
int update(PushRecordDetailPO pushRecordDetail);
/**
* 修改忽略null字段
*
* @param pushRecordDetail 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(PushRecordDetailPO pushRecordDetail);
/**
* 删除记录
*
* @param pushRecordDetail 待删除的记录
* @return 返回影响行数
*/
int delete(PushRecordDetailPO pushRecordDetail);
/**
* 批量删除记录
* @param ids 主键id集合
*/
void deleteByIds(@Param("ids") Collection<Long> ids);
}

View File

@ -0,0 +1,238 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.engine.salary.mapper.push.PushRecordDetailMapper">
<resultMap id="BaseResultMap" type="com.engine.salary.entity.push.po.PushRecordDetailPO">
<result column="acct_emp_id" property="acctEmpId"/>
<result column="create_time" property="createTime"/>
<result column="creator" property="creator"/>
<result column="delete_type" property="deleteType"/>
<result column="execute" property="execute"/>
<result column="id" property="id"/>
<result column="record_id" property="recordId"/>
<result column="status" property="status"/>
<result column="tenant_key" property="tenantKey"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!-- 表字段 -->
<sql id="baseColumns">
t
.
acct_emp_id
, t.create_time
, t.creator
, t.delete_type
, t.execute
, t.id
, t.record_id
, t.status
, t.tenant_key
, t.update_time
</sql>
<!-- 查询全部 -->
<select id="listAll" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns"/>
FROM hrsa_push_record_detail t
WHERE delete_type = 0
</select>
<!-- 根据主键获取单条记录 -->
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
SELECT
<include refid="baseColumns"/>
FROM hrsa_push_record_detail t
WHERE id = #{id} AND delete_type = 0
</select>
<!-- 条件查询 -->
<select id="listSome" resultMap="BaseResultMap" parameterType="com.engine.salary.entity.push.po.PushRecordDetailPO">
SELECT
<include refid="baseColumns"/>
FROM hrsa_push_record_detail t
WHERE delete_type = 0
<if test="acctEmpId != null">
AND acct_emp_id = #{acctEmpId}
</if>
<if test="createTime != null">
AND create_time = #{createTime}
</if>
<if test="creator != null">
AND creator = #{creator}
</if>
<if test="deleteType != null">
AND delete_type = #{deleteType}
</if>
<if test="execute != null">
AND execute = #{execute}
</if>
<if test="id != null">
AND id = #{id}
</if>
<if test="recordId != null">
AND record_id = #{recordId}
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="tenantKey != null">
AND tenant_key = #{tenantKey}
</if>
<if test="updateTime != null">
AND update_time = #{updateTime}
</if>
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
ORDER BY id DESC
</select>
<!-- 插入不为NULL的字段 -->
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.push.po.PushRecordDetailPO">
INSERT INTO hrsa_push_record_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="acctEmpId != null">
acct_emp_id,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="creator != null">
creator,
</if>
<if test="deleteType != null">
delete_type,
</if>
<if test="execute != null">
execute,
</if>
<if test="id != null">
id,
</if>
<if test="recordId != null">
record_id,
</if>
<if test="status != null">
status,
</if>
<if test="tenantKey != null">
tenant_key,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="acctEmpId != null">
#{acctEmpId},
</if>
<if test="createTime != null">
#{createTime},
</if>
<if test="creator != null">
#{creator},
</if>
<if test="deleteType != null">
#{deleteType},
</if>
<if test="execute != null">
#{execute},
</if>
<if test="id != null">
#{id},
</if>
<if test="recordId != null">
#{recordId},
</if>
<if test="status != null">
#{status},
</if>
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="updateTime != null">
#{updateTime},
</if>
</trim>
</insert>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.push.po.PushRecordDetailPO">
UPDATE hrsa_push_record_detail
<set>
acct_emp_id=#{acctEmpId},
create_time=#{createTime},
creator=#{creator},
delete_type=#{deleteType},
execute=#{execute},
record_id=#{recordId},
status=#{status},
tenant_key=#{tenantKey},
update_time=#{updateTime},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新不为NULL的字段 -->
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.push.po.PushRecordDetailPO">
UPDATE hrsa_push_record_detail
<set>
<if test="acctEmpId != null">
acct_emp_id=#{acctEmpId},
</if>
<if test="createTime != null">
create_time=#{createTime},
</if>
<if test="creator != null">
creator=#{creator},
</if>
<if test="deleteType != null">
delete_type=#{deleteType},
</if>
<if test="execute != null">
execute=#{execute},
</if>
<if test="recordId != null">
record_id=#{recordId},
</if>
<if test="status != null">
status=#{status},
</if>
<if test="tenantKey != null">
tenant_key=#{tenantKey},
</if>
<if test="updateTime != null">
update_time=#{updateTime},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 根据主键删除记录 -->
<delete id="delete">
UPDATE hrsa_push_record_detail
SET delete_type=1
WHERE id = #{id}
AND delete_type = 0
</delete>
<delete id="deleteByIds">
UPDATE hrsa_push_record_detail
SET delete_type = 1
WHERE delete_type = 0
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -0,0 +1,73 @@
package com.engine.salary.mapper.push;
import com.engine.salary.entity.push.po.PushRecordPO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
public interface PushRecordMapper {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<PushRecordPO> listAll();
/**
* 条件查询
*
* @return 返回集合没有返回空List
*/
List<PushRecordPO> listSome(PushRecordPO pushRecord);
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
PushRecordPO getById(Long id);
/**
* 新增忽略null字段
*
* @param pushRecord 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(PushRecordPO pushRecord);
/**
* 修改修改所有字段
*
* @param pushRecord 修改的记录
* @return 返回影响行数
*/
int update(PushRecordPO pushRecord);
/**
* 修改忽略null字段
*
* @param pushRecord 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(PushRecordPO pushRecord);
/**
* 删除记录
*
* @param pushRecord 待删除的记录
* @return 返回影响行数
*/
int delete(PushRecordPO pushRecord);
/**
* 批量删除记录
* @param ids 主键id集合
*/
void deleteByIds(@Param("ids") Collection<Long> ids);
}

View File

@ -0,0 +1,253 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.engine.salary.mapper.push.PushRecordMapper">
<resultMap id="BaseResultMap" type="com.engine.salary.entity.push.po.PushRecordPO">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="type" property="type"/>
<result column="status" property="status"/>
<result column="setting_id" property="settingId"/>
<result column="acct_record_id" property="acctRecordId"/>
<result column="create_time" property="createTime"/>
<result column="creator" property="creator"/>
<result column="delete_type" property="deleteType"/>
<result column="tenant_key" property="tenantKey"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!-- 表字段 -->
<sql id="baseColumns">
t
.
acct_record_id
, t.create_time
, t.creator
, t.delete_type
, t.id
, t.name
, t.setting_id
, t.status
, t.tenant_key
, t.type
, t.update_time
</sql>
<!-- 查询全部 -->
<select id="listAll" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns"/>
FROM hrsa_push_record t
WHERE delete_type = 0
</select>
<!-- 根据主键获取单条记录 -->
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
SELECT
<include refid="baseColumns"/>
FROM hrsa_push_record t
WHERE id = #{id} AND delete_type = 0
</select>
<!-- 条件查询 -->
<select id="listSome" resultMap="BaseResultMap" parameterType="com.engine.salary.entity.push.po.PushRecordPO">
SELECT
<include refid="baseColumns"/>
FROM hrsa_push_record t
WHERE delete_type = 0
<if test="acctRecordId != null">
AND acct_record_id = #{acctRecordId}
</if>
<if test="createTime != null">
AND create_time = #{createTime}
</if>
<if test="creator != null">
AND creator = #{creator}
</if>
<if test="deleteType != null">
AND delete_type = #{deleteType}
</if>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
<if test="settingId != null">
AND setting_id = #{settingId}
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="tenantKey != null">
AND tenant_key = #{tenantKey}
</if>
<if test="type != null">
AND type = #{type}
</if>
<if test="updateTime != null">
AND update_time = #{updateTime}
</if>
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
ORDER BY id DESC
</select>
<!-- 插入不为NULL的字段 -->
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.push.po.PushRecordPO">
INSERT INTO hrsa_push_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="acctRecordId != null">
acct_record_id,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="creator != null">
creator,
</if>
<if test="deleteType != null">
delete_type,
</if>
<if test="id != null">
id,
</if>
<if test="name != null">
name,
</if>
<if test="settingId != null">
setting_id,
</if>
<if test="status != null">
status,
</if>
<if test="tenantKey != null">
tenant_key,
</if>
<if test="type != null">
type,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="acctRecordId != null">
#{acctRecordId},
</if>
<if test="createTime != null">
#{createTime},
</if>
<if test="creator != null">
#{creator},
</if>
<if test="deleteType != null">
#{deleteType},
</if>
<if test="id != null">
#{id},
</if>
<if test="name != null">
#{name},
</if>
<if test="settingId != null">
#{settingId},
</if>
<if test="status != null">
#{status},
</if>
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="type != null">
#{type},
</if>
<if test="updateTime != null">
#{updateTime},
</if>
</trim>
</insert>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.push.po.PushRecordPO">
UPDATE hrsa_push_record
<set>
acct_record_id=#{acctRecordId},
create_time=#{createTime},
creator=#{creator},
delete_type=#{deleteType},
name=#{name},
setting_id=#{settingId},
status=#{status},
tenant_key=#{tenantKey},
type=#{type},
update_time=#{updateTime},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新不为NULL的字段 -->
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.push.po.PushRecordPO">
UPDATE hrsa_push_record
<set>
<if test="acctRecordId != null">
acct_record_id=#{acctRecordId},
</if>
<if test="createTime != null">
create_time=#{createTime},
</if>
<if test="creator != null">
creator=#{creator},
</if>
<if test="deleteType != null">
delete_type=#{deleteType},
</if>
<if test="name != null">
name=#{name},
</if>
<if test="settingId != null">
setting_id=#{settingId},
</if>
<if test="status != null">
status=#{status},
</if>
<if test="tenantKey != null">
tenant_key=#{tenantKey},
</if>
<if test="type != null">
type=#{type},
</if>
<if test="updateTime != null">
update_time=#{updateTime},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 根据主键删除记录 -->
<delete id="delete">
UPDATE hrsa_push_record
SET delete_type=1
WHERE id = #{id}
AND delete_type = 0
</delete>
<delete id="deleteByIds">
UPDATE hrsa_push_record
SET delete_type = 1
WHERE delete_type = 0
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -60,11 +60,10 @@ public interface PushService {
/**
* 推送一条核算记录下的所有数据
*
* @param salarySobId
* @param salaryAcctRecordId
* @return
*/
void pushOneRecord(Long salarySobId);
void pushOneRecord(Long salaryAcctRecordId);
// void push(List<Long> recodes);
void createPushRecord(Long salaryAcctRecordId);
}

View File

@ -11,6 +11,7 @@ import com.engine.salary.entity.push.param.PushSettingItemQueryParam;
import com.engine.salary.entity.push.param.PushSettingItemSaveParam;
import com.engine.salary.entity.push.param.PushSettingQueryParam;
import com.engine.salary.entity.push.param.PushSettingSaveParam;
import com.engine.salary.entity.push.po.PushRecordPO;
import com.engine.salary.entity.push.po.PushSettingItemPO;
import com.engine.salary.entity.push.po.PushSettingPO;
import com.engine.salary.entity.salaryacct.bo.CalculateFormulaVarBO;
@ -324,7 +325,6 @@ public class PushServiceImpl extends Service implements PushService {
}
String tableName = setting.getTableName();
String sql = String.format("insert into %s (%s) values (%s)", tableName, String.join(",", fields), values.stream().map(Object::toString).collect(Collectors.joining(",")));
System.out.println(sql);
RecordSet rs = new RecordSet();
rs.execute(sql);
@ -339,9 +339,28 @@ public class PushServiceImpl extends Service implements PushService {
ModeRightInfo.editModeDataShare(1, modeId, mainId);
}
}
});
}
@Override
public void createPushRecord(Long salaryAcctRecordId) {
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId);
if (salaryAcctRecordPO == null) {
throw new SalaryRunTimeException("核算记录不存在!");
}
PushRecordPO.builder()
.id(IdGenerator.generate())
.acctRecordId(salaryAcctRecordId)
.status(0)
}
//创建推送记录
//推送记录明细
}

View File

@ -41,7 +41,7 @@ public class PushController {
return new ResponseResult<PushSettingQueryParam, PageInfo<PushSettingDTO>>(user).run(getPushWrapper(user)::settingList, param);
}
@GET
@POST
@Path("/mode/list")
@Produces(MediaType.APPLICATION_JSON)
public String modeList(@Context HttpServletRequest request, @Context HttpServletResponse response) {

View File

@ -23,6 +23,16 @@ public class PushWrapper extends Service {
return ServiceUtil.getService(PushServiceImpl.class, user);
}
public Object modeList() {
Map<String, Object> map = new HashMap<>();
map.put("appid", 1);
map.put("appidForAppname", 2);
map.put("aLLorCurrentKey", 1);
Map<String, Object> execute = commandExecutor.execute(new GetModeList(map, user));
return execute;
}
public PageInfo<PushSettingDTO> settingList(PushSettingQueryParam param) {
return getPushService(user).settingList(param);
}
@ -52,13 +62,4 @@ public class PushWrapper extends Service {
getPushService(user).pushOneRecord(pushParam.getSalaryAcctRecordId());
}
public Object modeList() {
Map<String, Object> map = new HashMap<>();
map.put("appid", 1);
map.put("appidForAppname", 2);
map.put("aLLorCurrentKey", 1);
Map<String, Object> execute = commandExecutor.execute(new GetModeList(map, user));
return execute;
}
}