创建推送记录接口;

重推接口;
This commit is contained in:
钱涛 2025-04-01 17:35:29 +08:00
parent 8e3c4bfacc
commit 0777f99870
6 changed files with 114 additions and 184 deletions

View File

@ -0,0 +1,29 @@
package com.engine.salary.entity.push.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 创建推送记录
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreatePushParam {
private List<Long> salaryAcctRecordIds;
}

View File

@ -13,6 +13,8 @@ import lombok.NoArgsConstructor;
public class PushParam {
private Long id;
private Long salaryAcctRecordId;

View File

@ -58,19 +58,14 @@ public interface PushService {
*/
void deleteItem(Long id);
/**
* 推送一条核算记录下的所有数据
*
* @param salaryAcctRecordId
* @return
*/
void pushOneRecord(Long salaryAcctRecordId);
void createPushRecord(Long salaryAcctRecordId);
void push(Long id);
void removeRecords(List<Long> records);
PageInfo<PushRecordDTO> recordList(RecordListQueryParam param);
PageInfo<PushRecordDetailDTO> recordDetailList(RecordDetailListQueryParam param);
}

View File

@ -246,120 +246,6 @@ public class PushServiceImpl extends Service implements PushService {
getPushSettingItemMapper().delete(PushSettingItemPO.builder().id(id).build());
}
@Override
public void pushOneRecord(Long salaryAcctRecordId) {
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId);
if (salaryAcctRecordPO == null) {
throw new SalaryRunTimeException("核算记录不存在!");
}
//查询核算人员
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId());
//薪资项目
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<>(),new ArrayList<>());
Map<String, List<CalculateFormulaVarBO.FormulaVarValue>> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO);
List<PushSettingPO> pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build());
pushSettingPOS.stream()
.filter(po -> po.getSalarySobIds().contains(salaryAcctRecordPO.getSalarySobId()))
.forEach(setting -> {
Long id = setting.getId();
List<PushSettingItemPO> pushSettingItemPOS = getPushSettingItemMapper().listSome(PushSettingItemPO.builder().settingId(id).build());
//每个人插入一条
for (SalaryAcctEmployeePO emp : salaryAcctEmployeePOS) {
//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(",")));
RecordSet rs = new RecordSet();
rs.execute(sql);
if (modeId != null) {
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);
}
}
});
}
@Override
public void createPushRecord(Long salaryAcctRecordId) {
Date now = new Date();
@ -506,9 +392,9 @@ public class PushServiceImpl extends Service implements PushService {
}
);
} catch (Exception e) {
log.error("推送失败", e);
log.error("创建推送记录失败", e);
removeRecords(recordIds);
throw new SalaryRunTimeException("推送失败");
throw new SalaryRunTimeException("创建推送记录失败");
}
//开始
@ -516,16 +402,10 @@ public class PushServiceImpl extends Service implements PushService {
}
/**
* 启动推送
*
* @param recordIds
*/
private void startBatchPush(List<Long> recordIds) {
recordIds.forEach(recordId -> {
@Override
public void push(Long id) {
//待推送
PushRecordPO pushRecordPO = getPushRecordMapper().getById(recordId);
PushRecordPO pushRecordPO = getPushRecordMapper().getById(id);
pushRecordPO.setStatus(PushRecordStatusEnum.RUN_WAITING.getValue());
getPushRecordMapper().updateIgnoreNull(pushRecordPO);
@ -568,9 +448,18 @@ public class PushServiceImpl extends Service implements PushService {
pushRecordPO.setStatus(PushRecordStatusEnum.RUN_FAIL.getValue());
}
getPushRecordMapper().updateIgnoreNull(pushRecordPO);
});
}
/**
* 启动推送
*
* @param recordIds
*/
private void startBatchPush(List<Long> recordIds) {
recordIds.forEach(this::push);
}
@Override
public void removeRecords(List<Long> recordIds) {

View File

@ -92,14 +92,6 @@ public class PushController {
return new ResponseResult<Long, String>(user).run(getPushWrapper(user)::deleteItem, id);
}
@POST
@Path("/push")
@Produces(MediaType.APPLICATION_JSON)
public String push(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PushParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<PushParam, String>(user).run(getPushWrapper(user)::push, param);
}
@POST
@Path("/record/list")
@Produces(MediaType.APPLICATION_JSON)
@ -115,4 +107,20 @@ public class PushController {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<RecordDetailListQueryParam, PageInfo<PushRecordDetailDTO>>(user).run(getPushWrapper(user)::recordDetailList, param);
}
@POST
@Path("/record/create")
@Produces(MediaType.APPLICATION_JSON)
public String createPushRecord(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody CreatePushParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<CreatePushParam, String>(user).run(getPushWrapper(user)::createPushRecord, param);
}
@POST
@Path("/record/push")
@Produces(MediaType.APPLICATION_JSON)
public String push(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PushParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<PushParam, String>(user).run(getPushWrapper(user)::push, param);
}
}

View File

@ -35,6 +35,7 @@ public class PushWrapper extends Service {
return execute;
}
public PageInfo<PushSettingDTO> settingList(PushSettingQueryParam param) {
return getPushService(user).settingList(param);
}
@ -60,13 +61,19 @@ public class PushWrapper extends Service {
getPushService(user).deleteItem(id);
}
public void push(PushParam pushParam) {
// getPushService(user).pushOneRecord(pushParam.getSalaryAcctRecordId());
getPushService(user).createPushRecord(pushParam.getSalaryAcctRecordId());
public void createPushRecord(CreatePushParam param) {
param.getSalaryAcctRecordIds().forEach(id -> {
getPushService(user).createPushRecord(id);
});
}
public PageInfo<PushRecordDTO> recordList(RecordListQueryParam param) {
public void push(PushParam pushParam) {
getPushService(user).push(pushParam.getId());
}
public PageInfo<PushRecordDTO> recordList(RecordListQueryParam param) {
return getPushService(user).recordList(param);
}