推送记录状态
This commit is contained in:
parent
1e2d37ad2e
commit
3ba1ea6cc7
|
|
@ -1,6 +1,7 @@
|
|||
package com.engine.salary.entity.push.po;
|
||||
|
||||
import com.engine.hrmelog.annotation.ElogTransform;
|
||||
import com.engine.salary.enums.push.PushRecordStatusEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
@ -21,12 +22,19 @@ public class PushRecordPO {
|
|||
@ElogTransform(name = "")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
|
||||
/**
|
||||
* 记录名
|
||||
*/
|
||||
@ElogTransform(name = "记录名")
|
||||
private String name;
|
||||
|
||||
|
||||
/**
|
||||
* 核算记录id
|
||||
*/
|
||||
|
|
@ -40,8 +48,20 @@ public class PushRecordPO {
|
|||
@ElogTransform(name = "推送配置id")
|
||||
private Long settingId;
|
||||
|
||||
/**
|
||||
* 建模id
|
||||
*/
|
||||
private Integer modeId;
|
||||
|
||||
/**
|
||||
* 数据库表名
|
||||
*/
|
||||
private String tableName;
|
||||
|
||||
|
||||
/**
|
||||
* 推送状态
|
||||
* @see PushRecordStatusEnum
|
||||
*/
|
||||
@ElogTransform(name = "推送状态")
|
||||
private Integer status;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public enum PushRecordStatusEnum implements BaseEnum<Integer> {
|
|||
PREPARE(0, "准备中", 87625),
|
||||
WAITING(1, "等待中", 87625),
|
||||
PROGRESS(2, "执行中", 85393),
|
||||
success(3, "执行成功", 85393),
|
||||
SUCCESS(3, "执行成功", 85393),
|
||||
FAIL(4, "执行失败", 85393);
|
||||
|
||||
private int value;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
package com.engine.salary.enums.push;
|
||||
|
||||
import com.engine.salary.enums.BaseEnum;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 推送记录状态
|
||||
* <p>Copyright: Copyright (c) 2024</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
public enum PushRecordTypeEnum implements BaseEnum<Integer> {
|
||||
PUSH(0, "推送", 85393),
|
||||
WITHDRAW(1, "撤回", 85393);
|
||||
|
||||
private int value;
|
||||
|
||||
private String defaultLabel;
|
||||
|
||||
private int labelId;
|
||||
|
||||
PushRecordTypeEnum(int value, String defaultLabel, int labelId) {
|
||||
this.value = value;
|
||||
this.defaultLabel = defaultLabel;
|
||||
this.labelId = labelId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultLabel() {
|
||||
return defaultLabel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getLabelId() {
|
||||
return labelId;
|
||||
}
|
||||
|
||||
public static PushRecordTypeEnum parseByValue(int value) {
|
||||
for (PushRecordTypeEnum salaryDataSourceEnum : PushRecordTypeEnum.values()) {
|
||||
if (Objects.equals(salaryDataSourceEnum.getValue(), value)) {
|
||||
return salaryDataSourceEnum;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String getDefaultLabelByValue(Integer value) {
|
||||
if (value == null) {
|
||||
return "";
|
||||
}
|
||||
PushRecordTypeEnum[] enumAry = PushRecordTypeEnum.values();
|
||||
for (int i = 0; i < Arrays.asList(enumAry).size(); i++) {
|
||||
if (enumAry[i].getValue().equals(value)) {
|
||||
return enumAry[i].getDefaultLabel();
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
@ -68,5 +68,6 @@ public interface PushRecordDetailMapper {
|
|||
* @param ids 主键id集合
|
||||
*/
|
||||
void deleteByIds(@Param("ids") Collection<Long> ids);
|
||||
|
||||
|
||||
void deleteByRecordId(Long acctRecordId);
|
||||
}
|
||||
|
|
@ -234,5 +234,11 @@
|
|||
</foreach>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByRecordId">
|
||||
UPDATE hrsa_push_record_detail
|
||||
SET delete_type=1
|
||||
WHERE record_id=#{recordId}
|
||||
AND delete_type = 0
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -69,5 +69,7 @@ public interface PushRecordMapper {
|
|||
* @param ids 主键id集合
|
||||
*/
|
||||
void deleteByIds(@Param("ids") Collection<Long> ids);
|
||||
|
||||
int countBeforeBatch(Long batchId);
|
||||
|
||||
}
|
||||
|
|
@ -3,6 +3,9 @@
|
|||
<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="batch_id" property="batchId"/>
|
||||
<result column="mode_id" property="modeId"/>
|
||||
<result column="table_name" property="tableName"/>
|
||||
<result column="name" property="name"/>
|
||||
<result column="type" property="type"/>
|
||||
<result column="status" property="status"/>
|
||||
|
|
@ -20,6 +23,9 @@
|
|||
t
|
||||
.
|
||||
acct_record_id
|
||||
, t.batch_id
|
||||
, t.mode_id
|
||||
, t.table_name
|
||||
, t.create_time
|
||||
, t.creator
|
||||
, t.delete_type
|
||||
|
|
@ -57,6 +63,15 @@
|
|||
<if test="acctRecordId != null">
|
||||
AND acct_record_id = #{acctRecordId}
|
||||
</if>
|
||||
<if test="batchId != null">
|
||||
AND batch_id = #{batchId}
|
||||
</if>
|
||||
<if test="modeId != null">
|
||||
AND mode_id = #{modeId}
|
||||
</if>
|
||||
<if test="tableName != null">
|
||||
AND table_name = #{tableName}
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
AND create_time = #{createTime}
|
||||
</if>
|
||||
|
|
@ -102,6 +117,15 @@
|
|||
INSERT INTO hrsa_push_record
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
<if test="batchId != null">
|
||||
batch_id,
|
||||
</if>
|
||||
<if test="modeId != null">
|
||||
mode_id,
|
||||
</if>
|
||||
<if test="tableName != null">
|
||||
table_name,
|
||||
</if>
|
||||
<if test="acctRecordId != null">
|
||||
acct_record_id,
|
||||
</if>
|
||||
|
|
@ -137,6 +161,15 @@
|
|||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="batchId != null">
|
||||
#{batchId},
|
||||
</if>
|
||||
<if test="modeId != null">
|
||||
#{modeId},
|
||||
</if>
|
||||
<if test="tableName != null">
|
||||
#{tableName},
|
||||
</if>
|
||||
<if test="acctRecordId != null">
|
||||
#{acctRecordId},
|
||||
</if>
|
||||
|
|
@ -177,6 +210,9 @@
|
|||
<update id="update" parameterType="com.engine.salary.entity.push.po.PushRecordPO">
|
||||
UPDATE hrsa_push_record
|
||||
<set>
|
||||
batch_id=#{batchId},
|
||||
mode_id=#{modeId},
|
||||
table_name=#{tableName},
|
||||
acct_record_id=#{acctRecordId},
|
||||
create_time=#{createTime},
|
||||
creator=#{creator},
|
||||
|
|
@ -196,6 +232,15 @@
|
|||
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.push.po.PushRecordPO">
|
||||
UPDATE hrsa_push_record
|
||||
<set>
|
||||
<if test="batchId != null">
|
||||
batch_id=#{batchId},
|
||||
</if>
|
||||
<if test="modeId != null">
|
||||
mode_id=#{modeId},
|
||||
</if>
|
||||
<if test="tableName != null">
|
||||
table_name=#{tableName},
|
||||
</if>
|
||||
<if test="acctRecordId != null">
|
||||
acct_record_id=#{acctRecordId},
|
||||
</if>
|
||||
|
|
@ -249,5 +294,12 @@
|
|||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="countBeforeBatch" resultMap="BaseResultMap">
|
||||
SELECT count(0)
|
||||
FROM hrsa_push_record t
|
||||
WHERE delete_type = 0
|
||||
and batch_id <![CDATA[ < ]]> #{batchId}
|
||||
and status not in (4, 5)
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -66,4 +66,6 @@ public interface PushService {
|
|||
void pushOneRecord(Long salaryAcctRecordId);
|
||||
|
||||
void createPushRecord(Long salaryAcctRecordId);
|
||||
|
||||
void removeBatch(Long batchId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,8 +26,10 @@ import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
|||
import com.engine.salary.enums.push.PushItemFieldEnum;
|
||||
import com.engine.salary.enums.push.PushRecordDetailStatusEnum;
|
||||
import com.engine.salary.enums.push.PushRecordStatusEnum;
|
||||
import com.engine.salary.enums.push.PushRecordTypeEnum;
|
||||
import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.push.PushRecordDetailMapper;
|
||||
import com.engine.salary.mapper.push.PushRecordMapper;
|
||||
import com.engine.salary.mapper.push.PushSettingItemMapper;
|
||||
import com.engine.salary.mapper.push.PushSettingMapper;
|
||||
|
|
@ -39,6 +41,7 @@ import com.engine.salary.util.db.MapperProxyFactory;
|
|||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.page.SalaryPageUtil;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import weaver.conn.RecordSet;
|
||||
|
|
@ -58,6 +61,7 @@ import java.util.stream.Collectors;
|
|||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class PushServiceImpl extends Service implements PushService {
|
||||
|
||||
private PushSettingMapper getPushSettingMapper() {
|
||||
|
|
@ -72,6 +76,10 @@ public class PushServiceImpl extends Service implements PushService {
|
|||
return MapperProxyFactory.getProxy(PushRecordMapper.class);
|
||||
}
|
||||
|
||||
private PushRecordDetailMapper getPushRecordDetailMapper() {
|
||||
return MapperProxyFactory.getProxy(PushRecordDetailMapper.class);
|
||||
}
|
||||
|
||||
private SalaryEmployeeService getSalaryEmployeeService(User user) {
|
||||
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
|
||||
}
|
||||
|
|
@ -249,8 +257,9 @@ public class PushServiceImpl extends Service implements PushService {
|
|||
|
||||
//查询核算人员
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId());
|
||||
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listAll();
|
||||
|
||||
//薪资项目
|
||||
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listAll();
|
||||
//查询薪资核算记录的薪资周期、考勤周期等
|
||||
SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctRecordPO.getId());
|
||||
|
||||
|
|
@ -327,7 +336,7 @@ public class PushServiceImpl extends Service implements PushService {
|
|||
String fieldName = item.getFieldName();
|
||||
fields.add(fieldName);
|
||||
// 公式变量的值
|
||||
String field = item.getSource() + "_" + item.getItem();
|
||||
String field = item.getItem();
|
||||
String value = formulaVarValueMap.getOrDefault(field, StringUtils.EMPTY);
|
||||
PushItemFieldEnum pushItemFieldEnum = PushItemFieldEnum.parseByValue(item.getFieldType());
|
||||
values.add(pushItemFieldEnum.convertValue(value));
|
||||
|
|
@ -353,6 +362,7 @@ public class PushServiceImpl extends Service implements PushService {
|
|||
|
||||
@Override
|
||||
public void createPushRecord(Long salaryAcctRecordId) {
|
||||
Date now = new Date();
|
||||
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId);
|
||||
|
||||
if (salaryAcctRecordPO == null) {
|
||||
|
|
@ -360,54 +370,210 @@ public class PushServiceImpl extends Service implements PushService {
|
|||
}
|
||||
List<PushSettingPO> pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build());
|
||||
|
||||
Date now = new Date();
|
||||
List<PushRecordPO> pushRecordPOList = pushSettingPOS.stream()
|
||||
.filter(po -> po.getSalarySobIds().contains(salaryAcctRecordPO.getSalarySobId()))
|
||||
.map(po -> PushRecordPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.name(po.getName())
|
||||
.settingId(po.getId())
|
||||
.acctRecordId(salaryAcctRecordId)
|
||||
.status(PushRecordStatusEnum.PREPARE.getValue())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.creator((long) user.getUID())
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build()
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
//批次号
|
||||
long batchId = IdGenerator.generate();
|
||||
|
||||
pushRecordPOList.forEach(record -> {
|
||||
getPushRecordMapper().insertIgnoreNull(record);
|
||||
try {
|
||||
pushSettingPOS.stream()
|
||||
.filter(setting -> setting.getSalarySobIds().contains(salaryAcctRecordPO.getSalarySobId()))
|
||||
.forEach(setting -> {
|
||||
PushRecordPO record = PushRecordPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.batchId(batchId)
|
||||
.name(setting.getName())
|
||||
.settingId(setting.getId())
|
||||
.modeId(setting.getModeId())
|
||||
.tableName(setting.getTableName())
|
||||
.acctRecordId(salaryAcctRecordId)
|
||||
.type(PushRecordTypeEnum.PUSH.getValue())
|
||||
.status(PushRecordStatusEnum.PREPARE.getValue())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.creator((long) user.getUID())
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
|
||||
getPushRecordMapper().insertIgnoreNull(record);
|
||||
|
||||
Long id = setting.getId();
|
||||
List<PushSettingItemPO> pushSettingItemPOS = getPushSettingItemMapper().listSome(PushSettingItemPO.builder().settingId(id).build());
|
||||
|
||||
|
||||
//查询核算人员
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId());
|
||||
//查询核算人员
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId());
|
||||
|
||||
salaryAcctEmployeePOS.stream().map(employee -> PushRecordDetailPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.acctEmpId(employee.getId())
|
||||
.recordId(record.getId())
|
||||
.status(PushRecordDetailStatusEnum.PREPARE.getValue())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.creator((long) user.getUID())
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
//薪资项目
|
||||
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listAll();
|
||||
//查询薪资核算记录的薪资周期、考勤周期等
|
||||
SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctRecordPO.getId());
|
||||
|
||||
SalaryAcctCalculateBO salaryAcctCalculateBO = new SalaryAcctCalculateBO()
|
||||
.setSalaryAcctRecordPO(salaryAcctRecordPO)
|
||||
.setSalarySobPO(new SalarySobPO())
|
||||
.setSalarySobCycleDTO(salarySobCycleDTO)
|
||||
.setOtherSalaryAcctRecordPOS(new ArrayList<>())
|
||||
.setSalarySobItemPOS(new ArrayList<>())
|
||||
.setSalaryItemIdWithPriorityList(new ArrayList<>())
|
||||
.setExpressFormulas(new ArrayList<>())
|
||||
.setSalaryItemPOS(salaryItemPOS)
|
||||
.setSalarySobAdjustRulePOS(new ArrayList<>())
|
||||
.setWelfareColumns(new HashMap<>())
|
||||
.setAttendQuoteFieldListDTOS(new ArrayList<>())
|
||||
.setSalaryAcctEmployeePOS(salaryAcctEmployeePOS)
|
||||
.setIssuedFieldIds(new HashSet<>())
|
||||
.setChildMonitor(null)
|
||||
.setResults(null)
|
||||
.setCalculateKey(null)
|
||||
.setVariableItems(new ArrayList<>())
|
||||
.setTaxDeclarationFunction(TaxDeclarationFunctionEnum.OPEN);
|
||||
|
||||
|
||||
});
|
||||
List<Long> employeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getEmployeeId, Collectors.toList());
|
||||
List<DataCollectionEmployee> simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds);
|
||||
|
||||
List<Long> salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList());
|
||||
List<SalaryAcctResultPO> salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds);
|
||||
|
||||
CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>());
|
||||
Map<String, List<CalculateFormulaVarBO.FormulaVarValue>> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO);
|
||||
|
||||
salaryAcctEmployeePOS.forEach(emp -> {
|
||||
|
||||
//1 获取当前薪资核算人员的公式中的变量的值
|
||||
List<CalculateFormulaVarBO.FormulaVarValue> formulaVarValues = formulaVarMap.get(emp.getEmployeeId() + "_" + emp.getTaxAgentId());
|
||||
//2 人员信息
|
||||
List<CalculateFormulaVarBO.FormulaVarValue> empInfo = formulaVarMap.get(emp.getEmployeeId() + "");
|
||||
formulaVarValues.addAll(empInfo);
|
||||
Map<String, String> formulaVarValueMap = SalaryEntityUtil.convert2Map(formulaVarValues, CalculateFormulaVarBO.FormulaVarValue::getFieldId, CalculateFormulaVarBO.FormulaVarValue::getFieldValue);
|
||||
|
||||
Integer modeId = setting.getModeId();
|
||||
|
||||
List<String> fields = new ArrayList<String>() {{
|
||||
add("formmodeid");
|
||||
add("modedatacreater");
|
||||
add("modedatacreatertype");
|
||||
add("modedatacreatedate");
|
||||
add("modedatacreatetime");
|
||||
}};
|
||||
String currDate = TimeUtil.getCurrentDateString();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||||
String currTime = sdf.format(new Date());
|
||||
List<Object> values = new ArrayList<Object>() {{
|
||||
add(modeId);
|
||||
add(1);
|
||||
add(0);
|
||||
add(String.format("'%s'", currDate));
|
||||
add(String.format("'%s'", currTime));
|
||||
}};
|
||||
for (PushSettingItemPO item : pushSettingItemPOS) {
|
||||
//数据库字段
|
||||
String fieldName = item.getFieldName();
|
||||
fields.add(fieldName);
|
||||
// 公式变量的值
|
||||
String field = item.getItem();
|
||||
String value = formulaVarValueMap.getOrDefault(field, StringUtils.EMPTY);
|
||||
PushItemFieldEnum pushItemFieldEnum = PushItemFieldEnum.parseByValue(item.getFieldType());
|
||||
values.add(pushItemFieldEnum.convertValue(value));
|
||||
}
|
||||
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(",")));
|
||||
|
||||
PushRecordDetailPO pushRecordDetailPO = PushRecordDetailPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.acctEmpId(emp.getId())
|
||||
.recordId(record.getId())
|
||||
.status(PushRecordDetailStatusEnum.PREPARE.getValue())
|
||||
.execute(sql)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.creator((long) user.getUID())
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
getPushRecordDetailMapper().insertIgnoreNull(pushRecordDetailPO);
|
||||
});
|
||||
|
||||
}
|
||||
);
|
||||
} catch (Exception e) {
|
||||
removeBatch(batchId);
|
||||
log.error("推送失败", e);
|
||||
throw new SalaryRunTimeException("推送失败");
|
||||
}
|
||||
|
||||
|
||||
//开始
|
||||
startBatchPush(batchId);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 启动推送
|
||||
*
|
||||
* @param batchId
|
||||
*/
|
||||
private void startBatchPush(Long batchId) {
|
||||
List<PushRecordPO> pushRecordPOS = getPushRecordMapper().listSome(PushRecordPO.builder().batchId(batchId).build());
|
||||
pushRecordPOS.forEach(
|
||||
pushRecord -> {
|
||||
pushRecord.setStatus(PushRecordStatusEnum.WAITING.getValue());
|
||||
getPushRecordMapper().updateIgnoreNull(pushRecord);
|
||||
}
|
||||
);
|
||||
|
||||
//创建推送记录
|
||||
|
||||
//推送记录明细
|
||||
//先查看是否还有前置批次没执行完
|
||||
while (true) {
|
||||
int countBeforeBatch = getPushRecordMapper().countBeforeBatch(batchId);
|
||||
if (countBeforeBatch > 0) {
|
||||
try {
|
||||
Thread.sleep(5000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pushRecordPOS.forEach(pushRecordPO -> {
|
||||
pushRecordPO.setStatus(PushRecordStatusEnum.PROGRESS.getValue());
|
||||
getPushRecordMapper().updateIgnoreNull(pushRecordPO);
|
||||
|
||||
|
||||
List<PushRecordDetailPO> pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(pushRecordPO.getId()).build());
|
||||
pushRecordDetailPOS.forEach(pushRecordDetailPO -> {
|
||||
String execute = pushRecordDetailPO.getExecute();
|
||||
RecordSet rs = new RecordSet();
|
||||
rs.execute(execute);
|
||||
//建模需要权限重构
|
||||
Integer modeId = pushRecordPO.getModeId();
|
||||
if (modeId != null) {
|
||||
String tableName = pushRecordPO.getTableName();
|
||||
rs.executeQuery("select max(id) from " + tableName);
|
||||
int mainId = 0;
|
||||
if (rs.next()) {
|
||||
mainId = rs.getInt(1);
|
||||
}
|
||||
ModeRightInfo ModeRightInfo = new ModeRightInfo();
|
||||
ModeRightInfo.setNewRight(true);
|
||||
ModeRightInfo.editModeDataShare(1, modeId, mainId);
|
||||
}
|
||||
});
|
||||
|
||||
pushRecordPO.setStatus(PushRecordStatusEnum.SUCCESS.getValue());
|
||||
getPushRecordMapper().updateIgnoreNull(pushRecordPO);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void removeBatch(Long batchId) {
|
||||
List<PushRecordPO> pushRecordPOS = getPushRecordMapper().listSome(PushRecordPO.builder().batchId(batchId).build());
|
||||
pushRecordPOS.forEach(pushRecordPO -> {
|
||||
getPushRecordDetailMapper().deleteByRecordId(pushRecordPO.getId());
|
||||
getPushRecordMapper().delete(pushRecordPO);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,8 @@ public class PushWrapper extends Service {
|
|||
}
|
||||
|
||||
public void push(PushParam pushParam) {
|
||||
getPushService(user).pushOneRecord(pushParam.getSalaryAcctRecordId());
|
||||
// getPushService(user).pushOneRecord(pushParam.getSalaryAcctRecordId());
|
||||
getPushService(user).createPushRecord(pushParam.getSalaryAcctRecordId());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue