From 0777f99870c91953281b2a47b8f5f9eb2d804bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 1 Apr 2025 17:35:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=8E=A8=E9=80=81=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=8E=A5=E5=8F=A3=EF=BC=9B=20=E9=87=8D=E6=8E=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/push/param/CreatePushParam.java | 29 +++ .../salary/entity/push/param/PushParam.java | 2 + .../engine/salary/service/PushService.java | 11 +- .../salary/service/impl/PushServiceImpl.java | 215 +++++------------- src/com/engine/salary/web/PushController.java | 24 +- .../engine/salary/wrapper/PushWrapper.java | 17 +- 6 files changed, 114 insertions(+), 184 deletions(-) create mode 100644 src/com/engine/salary/entity/push/param/CreatePushParam.java diff --git a/src/com/engine/salary/entity/push/param/CreatePushParam.java b/src/com/engine/salary/entity/push/param/CreatePushParam.java new file mode 100644 index 000000000..5ef10fef4 --- /dev/null +++ b/src/com/engine/salary/entity/push/param/CreatePushParam.java @@ -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; + + +/** + * 创建推送记录 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CreatePushParam { + + + private List salaryAcctRecordIds; + + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/push/param/PushParam.java b/src/com/engine/salary/entity/push/param/PushParam.java index 24f8c257e..f653c639b 100644 --- a/src/com/engine/salary/entity/push/param/PushParam.java +++ b/src/com/engine/salary/entity/push/param/PushParam.java @@ -13,6 +13,8 @@ import lombok.NoArgsConstructor; public class PushParam { + private Long id; + private Long salaryAcctRecordId; diff --git a/src/com/engine/salary/service/PushService.java b/src/com/engine/salary/service/PushService.java index e84690d73..f3e5c91f9 100644 --- a/src/com/engine/salary/service/PushService.java +++ b/src/com/engine/salary/service/PushService.java @@ -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 records); PageInfo recordList(RecordListQueryParam param); PageInfo recordDetailList(RecordDetailListQueryParam param); + } diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index 1107e43d6..8503f447b 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -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 salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()); - - //薪资项目 - List 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 employeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); - List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); - - List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); - List 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> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); - - - List pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build()); - pushSettingPOS.stream() - .filter(po -> po.getSalarySobIds().contains(salaryAcctRecordPO.getSalarySobId())) - .forEach(setting -> { - - Long id = setting.getId(); - List pushSettingItemPOS = getPushSettingItemMapper().listSome(PushSettingItemPO.builder().settingId(id).build()); - - - //每个人插入一条 - for (SalaryAcctEmployeePO emp : salaryAcctEmployeePOS) { - //1 获取当前薪资核算人员的公式中的变量的值 - List formulaVarValues = formulaVarMap.get(emp.getEmployeeId() + "_" + emp.getTaxAgentId()); - //2 人员信息 - List empInfo = formulaVarMap.get(emp.getEmployeeId() + ""); - formulaVarValues.addAll(empInfo); - Map formulaVarValueMap = SalaryEntityUtil.convert2Map(formulaVarValues, CalculateFormulaVarBO.FormulaVarValue::getFieldId, CalculateFormulaVarBO.FormulaVarValue::getFieldValue); - - Integer modeId = setting.getModeId(); - - List fields = new ArrayList() {{ - 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 values = new ArrayList() {{ - 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,62 +402,65 @@ public class PushServiceImpl extends Service implements PushService { } + @Override + public void push(Long id) { + //待推送 + PushRecordPO pushRecordPO = getPushRecordMapper().getById(id); + pushRecordPO.setStatus(PushRecordStatusEnum.RUN_WAITING.getValue()); + getPushRecordMapper().updateIgnoreNull(pushRecordPO); + + try { + pushRecordPO.setStartTime(new Date()); + pushRecordPO.setStatus(PushRecordStatusEnum.RUN_PROGRESS.getValue()); + getPushRecordMapper().updateIgnoreNull(pushRecordPO); + List pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(pushRecordPO.getId()).build()); + pushRecordDetailPOS.forEach(pushRecordDetailPO -> { + + try { + 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); + } + + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); + } catch (Exception e) { + pushRecordDetailPO.setFail_reason(e.getMessage()); + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); + } + }); + + pushRecordPO.setEndTime(new Date()); + pushRecordPO.setStatus(PushRecordStatusEnum.RUN_SUCCESS.getValue()); + } catch (Exception e) { + pushRecordPO.setFail_reason(e.getMessage()); + pushRecordPO.setStatus(PushRecordStatusEnum.RUN_FAIL.getValue()); + } + getPushRecordMapper().updateIgnoreNull(pushRecordPO); + } + /** * 启动推送 * * @param recordIds */ private void startBatchPush(List recordIds) { - - recordIds.forEach(recordId -> { - //待推送 - PushRecordPO pushRecordPO = getPushRecordMapper().getById(recordId); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_WAITING.getValue()); - getPushRecordMapper().updateIgnoreNull(pushRecordPO); - - try { - pushRecordPO.setStartTime(new Date()); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_PROGRESS.getValue()); - getPushRecordMapper().updateIgnoreNull(pushRecordPO); - List pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(pushRecordPO.getId()).build()); - pushRecordDetailPOS.forEach(pushRecordDetailPO -> { - - try { - 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); - } - - pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); - } catch (Exception e) { - pushRecordDetailPO.setFail_reason(e.getMessage()); - pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); - } - }); - - pushRecordPO.setEndTime(new Date()); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_SUCCESS.getValue()); - } catch (Exception e) { - pushRecordPO.setFail_reason(e.getMessage()); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_FAIL.getValue()); - } - getPushRecordMapper().updateIgnoreNull(pushRecordPO); - }); + recordIds.forEach(this::push); } + @Override public void removeRecords(List recordIds) { recordIds.forEach(recordId -> { diff --git a/src/com/engine/salary/web/PushController.java b/src/com/engine/salary/web/PushController.java index b36c06ed2..1ad8fe061 100644 --- a/src/com/engine/salary/web/PushController.java +++ b/src/com/engine/salary/web/PushController.java @@ -92,14 +92,6 @@ public class PushController { return new ResponseResult(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(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>(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(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(user).run(getPushWrapper(user)::push, param); + } } diff --git a/src/com/engine/salary/wrapper/PushWrapper.java b/src/com/engine/salary/wrapper/PushWrapper.java index f59d1c934..6d557ba8f 100644 --- a/src/com/engine/salary/wrapper/PushWrapper.java +++ b/src/com/engine/salary/wrapper/PushWrapper.java @@ -35,6 +35,7 @@ public class PushWrapper extends Service { return execute; } + public PageInfo settingList(PushSettingQueryParam param) { return getPushService(user).settingList(param); } @@ -60,14 +61,20 @@ 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 recordList(RecordListQueryParam param) { + public void push(PushParam pushParam) { + getPushService(user).push(pushParam.getId()); + } - return getPushService(user).recordList(param); + + + public PageInfo recordList(RecordListQueryParam param) { + return getPushService(user).recordList(param); } public PageInfo recordDetailList(RecordDetailListQueryParam param) {