diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java index 8ebe19131..16637803d 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java @@ -37,6 +37,9 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { //个税扣缴义务人 private Long taxAgentId; + // 审批流程id + private String requestId; + //分部 private Collection subcompanyIds; diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index 7d6c82f58..d3c154158 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -94,6 +94,8 @@ public class SalaryAcctEmployeePO { */ private Date updateTime; + private String requestId; + //--------条件---------- //主键id集合 private Collection ids; diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultPO.java index 92bafa44e..a39b12816 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultPO.java @@ -96,6 +96,8 @@ public class SalaryAcctResultPO { */ private Date updateTime; + private String requestId; + //条件 private Collection ids; private Collection salaryAcctRecordIds; diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java index f23df1512..61bd80b81 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java @@ -83,4 +83,10 @@ public class SalarySobItemFormDTO { // 薪资档案引用。0:薪资档案未引用、1:薪资档案引用 private Integer useInEmployeeSalary; + + // 在审批流程中显示 + private Integer showInWorkflow; + + // 在审批流程中展示合计 + private Integer sumInWorkflow; } diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java index e19856374..6704b644f 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java @@ -93,6 +93,16 @@ public class SalarySobItemSaveParam { */ private Integer valueType; + /** + * 在审批流程中显示 + */ + private Integer showInWorkflow; + + /** + * 在审批流程中展示合计 + */ + private Integer sumInWorkflow; + } @Data diff --git a/src/com/engine/salary/entity/salarysob/param/SyncWorkflowSettingParam.java b/src/com/engine/salary/entity/salarysob/param/SyncWorkflowSettingParam.java new file mode 100644 index 000000000..b3675be70 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/param/SyncWorkflowSettingParam.java @@ -0,0 +1,34 @@ +package com.engine.salary.entity.salarysob.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SyncWorkflowSettingParam + * @date 2023/12/29 10:04 + * @description 同步账套薪资项目流程设置 至 其他账套中 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SyncWorkflowSettingParam { + + // 薪资项目id + @DataCheck(require = true, message = "薪资项目id不能为空") + private Long salaryItemId; + + // 薪资账套id + @DataCheck(require = true, message = "薪资账套不能为空") + private List salarySobIds; + + private Integer showInWorkflow; + + private Integer sumInWorkflow; +} diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java index e3167bc23..e9e8b483e 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java @@ -113,6 +113,12 @@ public class SalarySobItemPO { //该分类是否隐藏(0不隐藏,1隐藏) private Long itemHide; + // 在审批流程中显示 + private Integer showInWorkflow; + + // 在审批流程中展示合计 + private Integer sumInWorkflow; + //in Collection ids; Collection salarySobIds; diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeWZMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeWZMapper.java new file mode 100644 index 000000000..b79d19ec9 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeWZMapper.java @@ -0,0 +1,31 @@ +package com.engine.salary.mapper.salaryacct; + +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +/** + * 薪资核算人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface SalaryAcctEmployeeWZMapper { + /** + * 根据流程id获取 + * @param requestId + * @return + */ + List listByRequestId(@Param("requestId")String requestId); + + /** + * 批量插入 + * + * @param salaryAccountingEmployees + */ + void batchInsert(@Param("collection") Collection salaryAccountingEmployees); +} diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeWZMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeWZMapper.xml new file mode 100644 index 000000000..c1735cc92 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeWZMapper.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + t + . + id + , t.salary_acct_record_id + , t.salary_sob_id + , t.employee_id + , t.tax_agent_id + , t.salary_month + , t.creator + , t.create_time + , t.update_time + , t.delete_type + , t.tenant_key + , t.employee_type + + + INSERT INTO hrsa_salary_acct_emp_wz( + id,salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, + creator, create_time, update_time, delete_type, tenant_key,employee_type, request_id) + VALUES + + ( + #{emp.id}, + #{emp.salaryAcctRecordId}, + #{emp.salarySobId}, + #{emp.employeeId}, + #{emp.taxAgentId}, + #{emp.salaryMonth}, + #{emp.creator}, + #{emp.createTime}, + #{emp.updateTime}, + #{emp.deleteType}, + #{emp.tenantKey}, + #{emp.employeeType}, + #{emp.requestId} + ) + + + + INSERT INTO hrsa_salary_acct_emp_wz( + id,salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, + creator, create_time, update_time, delete_type, tenant_key,employee_type, request_id) + + + select + #{emp.id,jdbcType=DOUBLE}, + #{emp.salaryAcctRecordId,jdbcType=DOUBLE}, + #{emp.salarySobId,jdbcType=DOUBLE}, + #{emp.employeeId,jdbcType=DOUBLE}, + #{emp.taxAgentId,jdbcType=DOUBLE}, + #{emp.salaryMonth,jdbcType=DATE}, + #{emp.creator,jdbcType=DOUBLE}, + #{emp.createTime,jdbcType=DATE}, + #{emp.updateTime,jdbcType=DATE}, + #{emp.deleteType,jdbcType=INTEGER}, + #{emp.tenantKey,jdbcType=VARCHAR}, + #{emp.employeeType,jdbcType=INTEGER}, + #{emp.requestId,jdbcType=VARCHAR} + from dual + + + + + INSERT INTO hrsa_salary_acct_emp_wz( + id,salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, + creator, create_time, update_time, delete_type, tenant_key,employee_type, request_id) + VALUES + ( + #{emp.id}, + #{emp.salaryAcctRecordId}, + #{emp.salarySobId}, + #{emp.employeeId}, + #{emp.taxAgentId}, + #{emp.salaryMonth}, + #{emp.creator}, + #{emp.createTime}, + #{emp.updateTime}, + #{emp.deleteType}, + #{emp.tenantKey}, + #{emp.employeeType}, + #{emp.requstId} + ) + + + + + + diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultWZMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultWZMapper.java new file mode 100644 index 000000000..236f93c79 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultWZMapper.java @@ -0,0 +1,26 @@ +package com.engine.salary.mapper.salaryacct; + +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface SalaryAcctResultWZMapper { + + + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(SalaryAcctResultPO salaryAcctResult); + + /** + * 批量新增 + * + * @param salaryAccountingResults + */ + void batchInsert(@Param("collection") Collection salaryAccountingResults); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultWZMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultWZMapper.xml new file mode 100644 index 000000000..3cba55c5a --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultWZMapper.xml @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + t + . + id + , t.salary_sob_id + , t.salary_acct_emp_id + , t.salary_acct_record_id + , t.employee_id + , t.tax_agent_id + , t.salary_item_id + , t.result_value + , t.origin_result_value + , t.creator + , t.create_time + , t.update_time + , t.delete_type + , t.tenant_key + + + + + + + + INSERT INTO hrsa_salary_acct_result_wz(id,salary_sob_id, salary_acct_emp_id, salary_acct_record_id, employee_id, + tax_agent_id, salary_item_id, result_value, origin_result_value, creator, create_time, update_time, delete_type, tenant_key, request_id) + VALUES + + ( + #{item.id}, + #{item.salarySobId}, + #{item.salaryAcctEmpId}, + #{item.salaryAcctRecordId}, + #{item.employeeId}, + #{item.taxAgentId}, + #{item.salaryItemId}, + #{item.resultValue}, + #{item.originResultValue}, + #{item.creator}, + #{item.createTime}, + #{item.updateTime}, + #{item.deleteType}, + #{item.tenantKey}, + #{item.requestId} + ) + + + + INSERT INTO hrsa_salary_acct_result_wz( id,salary_sob_id, salary_acct_emp_id, salary_acct_record_id, employee_id, + tax_agent_id, salary_item_id, result_value, origin_result_value, creator, create_time, update_time, delete_type, tenant_key, request_id) + + + select + #{item.id,jdbcType=DOUBLE}, + #{item.salarySobId,jdbcType=DOUBLE}, + #{item.salaryAcctEmpId,jdbcType=DOUBLE}, + #{item.salaryAcctRecordId,jdbcType=DOUBLE}, + #{item.employeeId,jdbcType=DOUBLE}, + #{item.taxAgentId,jdbcType=DOUBLE}, + #{item.salaryItemId,jdbcType=DOUBLE}, + #{item.resultValue,jdbcType=VARCHAR}, + #{item.originResultValue,jdbcType=VARCHAR}, + #{item.creator,jdbcType=DOUBLE}, + #{item.createTime,jdbcType=DATE}, + #{item.updateTime,jdbcType=DATE}, + #{item.deleteType,jdbcType=INTEGER}, + #{item.tenantKey,jdbcType=VARCHAR}, + #{item.requestId,jdbcType=VARCHAR} + from dual + + + + + INSERT INTO hrsa_salary_acct_result_wz(id,salary_sob_id, salary_acct_emp_id, salary_acct_record_id, employee_id, + tax_agent_id, salary_item_id, result_value, origin_result_value, creator, create_time, update_time, delete_type, tenant_key, request_id) + VALUES + ( + #{item.id}, + #{item.salarySobId}, + #{item.salaryAcctEmpId}, + #{item.salaryAcctRecordId}, + #{item.employeeId}, + #{item.taxAgentId}, + #{item.salaryItemId}, + #{item.resultValue}, + #{item.originResultValue}, + #{item.creator}, + #{item.createTime}, + #{item.updateTime}, + #{item.deleteType}, + #{item.tenantKey}, + #{item.requestId} + ) + + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index ed7016175..7124f6165 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -15,6 +15,8 @@ + + @@ -37,6 +39,8 @@ , t.rounding_mode , t.pattern , t.value_type + , t.show_in_workflow + , t.sum_in_workflow @@ -336,6 +340,12 @@ value_type=#{valueType}, + + show_in_workflow=#{showInWorkflow}, + + + sum_in_workflow=#{sumInWorkflow}, + WHERE id = #{id} AND delete_type = 0 @@ -382,7 +392,7 @@ INSERT INTO hrsa_salary_sob_item(salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,show_in_workflow,sum_in_workflow) VALUES ( @@ -400,13 +410,15 @@ #{item.canDelete}, #{item.roundingMode}, #{item.pattern}, - #{item.valueType} + #{item.valueType}, + #{item.showInWorkflow}, + #{item.sumInWorkflow} ) INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,show_in_workflow,sum_in_workflow) select @@ -424,14 +436,16 @@ #{item.canDelete,jdbcType=INTEGER}, #{item.roundingMode,jdbcType=INTEGER}, #{item.pattern,jdbcType=INTEGER}, - #{item.valueType,jdbcType=INTEGER} + #{item.valueType,jdbcType=INTEGER}, + #{item.showInWorkflow,jdbcType=INTEGER}, + #{item.sumInWorkflow,jdbcType=INTEGER} from dual INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,show_in_workflow,sum_in_workflow) VALUES ( #{item.salarySobId}, @@ -448,7 +462,9 @@ #{item.canDelete}, #{item.roundingMode}, #{item.pattern}, - #{item.valueType} + #{item.valueType}, + #{item.showInWorkflow}, + #{item.sumInWorkflow} ) diff --git a/src/com/engine/salary/service/SalaryAcctEmployeeWZService.java b/src/com/engine/salary/service/SalaryAcctEmployeeWZService.java new file mode 100644 index 000000000..451365a59 --- /dev/null +++ b/src/com/engine/salary/service/SalaryAcctEmployeeWZService.java @@ -0,0 +1,31 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; + +import java.util.Collection; +import java.util.List; + +/** + * 薪资核算人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface SalaryAcctEmployeeWZService { + + /** + * 根据流程id获取核算人员 + * @param requestId + * @return + */ + List listByRequestId(String requestId); + + /** + * 批量保存 + * + * @param salaryAcctEmployeePOS 薪资核算人员 + */ + void batchSave(Collection salaryAcctEmployeePOS); +} diff --git a/src/com/engine/salary/service/SalaryAcctExcelService.java b/src/com/engine/salary/service/SalaryAcctExcelService.java index 25dbc0d18..3091d69b9 100644 --- a/src/com/engine/salary/service/SalaryAcctExcelService.java +++ b/src/com/engine/salary/service/SalaryAcctExcelService.java @@ -58,6 +58,13 @@ public interface SalaryAcctExcelService { */ List listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO); + /** + * 表头 + * @param salaryAcctRecordPO + * @return + */ + List listWeaTableColumnForWorkflow(SalaryAcctRecordPO salaryAcctRecordPO, SalaryAcctResultQueryParam param); + /** * 报表表头 * @param salaryAcctRecordPO @@ -120,6 +127,7 @@ public interface SalaryAcctExcelService { void cacheExportField(List salaryItems); + List> getSalaryItemList(Long salaryAcctRecordId); // // /** // * 薪资核算结果校验异常导出 diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 67320ed0d..91de77bc4 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -207,4 +207,8 @@ public interface SalaryAcctResultService { * @return */ Boolean checkAuth(Long salaryAcctRecordId); + + PageInfo> listForWorkflow(SalaryAcctResultQueryParam param); + + Map sumRowForWorkflow(SalaryAcctResultQueryParam param); } diff --git a/src/com/engine/salary/service/SalaryAcctResultWZService.java b/src/com/engine/salary/service/SalaryAcctResultWZService.java new file mode 100644 index 000000000..efff46211 --- /dev/null +++ b/src/com/engine/salary/service/SalaryAcctResultWZService.java @@ -0,0 +1,34 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; + +import java.util.Collection; +import java.util.List; + +/** + * 薪资核算结果 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface SalaryAcctResultWZService { + + /** + * @description 根据薪资核算人员id、薪资项目id获取薪资核算结果 + * @return List + * @author Harryxzy + * @date 2022/12/26 22:24 + */ + List listByAcctEmployeeIdsAndSalaryItemIdsAndRequestId(List salaryAcctEmpIds, Collection salaryItemIds, String requestId); + + /** + * 批量保存 + * + * @param salaryAcctResultPOS 薪资核算结果 + */ + void batchSave(List salaryAcctResultPOS); + + +} diff --git a/src/com/engine/salary/service/SalarySobItemService.java b/src/com/engine/salary/service/SalarySobItemService.java index 7f1aa0647..cbe63b1c5 100644 --- a/src/com/engine/salary/service/SalarySobItemService.java +++ b/src/com/engine/salary/service/SalarySobItemService.java @@ -4,6 +4,7 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; +import com.engine.salary.entity.salarysob.param.SyncWorkflowSettingParam; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import java.util.Collection; @@ -127,4 +128,10 @@ public interface SalarySobItemService { SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param); void update(SalarySobItemPO po); + + /** + * 将薪资项目的流程设置同步到其他薪资账套中 + * @param param + */ + void syncWorkflowSetting(SyncWorkflowSettingParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeWZServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeWZServiceImpl.java new file mode 100644 index 000000000..3147ecca4 --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeWZServiceImpl.java @@ -0,0 +1,43 @@ +package com.engine.salary.service.impl; + +import com.api.formmode.mybatis.util.SqlProxyHandle; +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import com.engine.salary.mapper.salaryacct.SalaryAcctEmployeeWZMapper; +import com.engine.salary.service.SalaryAcctEmployeeWZService; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collection; +import java.util.List; + +/** + * 薪资核算人员 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class SalaryAcctEmployeeWZServiceImpl extends Service implements SalaryAcctEmployeeWZService { + + private SalaryAcctEmployeeWZMapper getSalaryAcctEmployeeWZMapper() { + return SqlProxyHandle.getProxy(SalaryAcctEmployeeWZMapper.class); + } + + @Override + public List listByRequestId(String requestId) { + return getSalaryAcctEmployeeWZMapper().listByRequestId(requestId); + } + + @Override + public void batchSave(Collection salaryAcctEmployeePOS) { + if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { + return; + } + List> partition = Lists.partition((List) salaryAcctEmployeePOS, 200); + partition.forEach(getSalaryAcctEmployeeWZMapper()::batchInsert); + } +} diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 8840d9302..c0aba107b 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -43,6 +43,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelSupport; import com.engine.salary.util.excel.ExcelUtilPlus; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.engine.salary.wrapper.SalarySobItemWrapper; import com.google.common.collect.Lists; @@ -397,6 +398,44 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc return columnList; } + @Override + public List listWeaTableColumnForWorkflow(SalaryAcctRecordPO salaryAcctRecordPO, SalaryAcctResultQueryParam param) { + // 是否是回算 + SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctRecordPO.getId()); + boolean isBackCalc = Objects.equals(byId.getBackCalcStatus(), 1); + // 查询薪资账套下的薪资项目+员工信息字段 + SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getSalarySobId(),isBackCalc); + // 构建薪资核算结果列表表头 + List columnList = new ArrayList<>(); + // 查询薪资项目 + List itemPOList = getSalaryItemService(user).listByIds(param.getSalaryItemIds()); + Map salaryItemPOMap = SalaryEntityUtil.convert2Map(itemPOList, SalaryItemPO::getId); + + // 员工信息字段 + for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) { + columnList.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName()), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId())); + } + param.getSalaryItemIds().forEach(item -> { + SalaryItemPO salaryItemPO = salaryItemPOMap.get(item); + if (salaryItemPO != null) { + columnList.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salaryItemPO.getName()), salaryItemPO.getName(), salaryItemPO.getId().toString())); + } + }); + + // 获取固定列头数 + SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS); + if (ObjectUtils.isNotEmpty(salaryAcctFixedColumns)) { + int fixedNum = NumberUtils.isCreatable(salaryAcctFixedColumns.getConfValue()) ? Integer.valueOf(salaryAcctFixedColumns.getConfValue()) : 3; + if (fixedNum == 0) { + fixedNum = 3; + } + for (int i = 0; i < fixedNum; i++) { + columnList.get(i).setFixed("left"); + } + } + return columnList; + } + /** * 报表表头 * @@ -1337,6 +1376,27 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } + @Override + public List> getSalaryItemList(Long salaryAcctRecordId) { + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException("薪资核算记录不存在,或已被删除"); + } + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + Map sobItemPOMap = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getSalaryItemId, SalarySobItemPO::getShowInWorkflow); + List salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId, Collectors.toList()); + List itemPOList = getSalaryItemService(user).listByIds(salaryItemIds); + List> result = new ArrayList<>(); + itemPOList.stream().forEach( po -> { + Map map = new HashMap<>(); + map.put("id", po.getId()); + map.put("name", po.getName()); + map.put("default",sobItemPOMap.get(po.getId()) == null ? 0 : sobItemPOMap.get(po.getId())); + result.add(map); + }); + + return result; + } // @Override // public Map exportCheckResult( // SalaryCheckResultExportParam exportParam, diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 039546c4d..dbb86e7d4 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -88,6 +88,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); } + private SalaryAcctEmployeeWZService getSalaryAcctEmployeeWZService(User user) { + return ServiceUtil.getService(SalaryAcctEmployeeWZServiceImpl.class, user); + } + private SalarySobItemService getSalarySobItemService(User user) { return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } @@ -183,6 +187,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(TaxAgentAdminServiceImpl.class, user); } + private SalaryAcctResultWZService getSalaryAcctResultWZService(User user) { + return ServiceUtil.getService(SalaryAcctResultWZServiceImpl.class, user); + } + private SalaryCheckResultService salaryCheckResultService; @@ -496,6 +504,121 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } + /** + * 根据薪资核算人员查询薪资核算结果 + * + * @param queryParam 列表查询条件 + * @return + */ + public PageInfo> listForWorkflow(SalaryAcctResultQueryParam queryParam) { + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + // 查询薪资核算所用的薪资账套的员工信息字段 + List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salaryItemPOS = getSalaryItemService(user).listByIds(queryParam.getSalaryItemIds()); + List salaryAcctEmployeePOS; + List simpleEmployees; + List salaryAcctEmployeePOList; + List salaryAcctResultPOS; + List taxAgentPOS; + if(StringUtils.isBlank(queryParam.getRequestId())) { + // 查询核算人员 + salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(queryParam.getSalaryAcctRecordId()); + salaryAcctEmployeePOList = SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeePOS); + List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId, Collectors.toList()); + // 查询薪资核算结果 + salaryAcctResultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIds, queryParam.getSalaryItemIds()); + // 查询人员信息 + List employeeIds = SalaryEntityUtil.properties(salaryAcctResultPOS, SalaryAcctResultPO::getEmployeeId, Collectors.toList()); + simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); + simpleEmployees.forEach(e -> { + UserStatusEnum userStatusEnum = UserStatusEnum.parseByValue(Integer.parseInt(e.getStatus())); + if (userStatusEnum != null) { + e.setStatusName(userStatusEnum.getDefaultLabel()); + } + }); + // 查询个税扣缴义务人 + Set taxAgentIds = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getTaxAgentId); + taxAgentPOS = getTaxAgentService(user).listByIds(taxAgentIds); + } else { + // 有流程id的话,去另一张核算结果表查 + // 查询核算人员 + salaryAcctEmployeePOS = getSalaryAcctEmployeeWZService(user).listByRequestId(queryParam.getRequestId()); + salaryAcctEmployeePOList = SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeePOS); + List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId, Collectors.toList()); + // 查询薪资核算结果 + salaryAcctResultPOS = getSalaryAcctResultWZService(user).listByAcctEmployeeIdsAndSalaryItemIdsAndRequestId(salaryAcctEmployeeIds, queryParam.getSalaryItemIds(), queryParam.getRequestId()); + // 查询人员信息 + List employeeIds = SalaryEntityUtil.properties(salaryAcctResultPOS, SalaryAcctResultPO::getEmployeeId, Collectors.toList()); + simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); + simpleEmployees.forEach(e -> { + UserStatusEnum userStatusEnum = UserStatusEnum.parseByValue(Integer.parseInt(e.getStatus())); + if (userStatusEnum != null) { + e.setStatusName(userStatusEnum.getDefaultLabel()); + } + }); + // 查询个税扣缴义务人 + Set taxAgentIds = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getTaxAgentId); + taxAgentPOS = getTaxAgentService(user).listByIds(taxAgentIds); + } + + + // 转换成薪资核算结果列表 + List> maps = SalaryAcctResultBO.buildTableData(salaryItemPOS, salarySobEmpFieldPOS, simpleEmployees, salaryAcctEmployeePOList, salaryAcctResultPOS, taxAgentPOS, Collections.emptySet(), new HashMap<>(), new HashMap<>(), false); + PageInfo> resultPage = new PageInfo<>(); + resultPage.setList(maps); + resultPage.setTotal(salaryAcctEmployeePOS.size()); + resultPage.setPageNum(queryParam.getCurrent()); + resultPage.setPageSize(queryParam.getPageSize()); + return resultPage; + } + + @Override + public Map sumRowForWorkflow(SalaryAcctResultQueryParam param) { + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + // 查询薪资核算所用薪资账套的薪资项目 + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + salarySobItemPOS = salarySobItemPOS.stream().filter(po -> param.getSalaryItemIds().contains(po.getSalaryItemId())).collect(Collectors.toList()); + Map salaryItemIdKeySalarySobItemPOMap = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); + Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); + List salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds); + + List salaryAcctEmployeePOS; + List salaryAcctResultPOS; + if (StringUtils.isBlank(param.getRequestId())) { + // 查询薪资核算人员 + salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId()); + if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { + return null; + } + // 查询薪资核算结果 + List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getId, Collectors.toList()); + salaryAcctResultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIds, salaryItemIds); + } else { + salaryAcctEmployeePOS = getSalaryAcctEmployeeWZService(user).listByRequestId(param.getRequestId()); + if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { + return null; + } + // 查询薪资核算结果 + List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getId, Collectors.toList()); + salaryAcctResultPOS = getSalaryAcctResultWZService(user).listByAcctEmployeeIdsAndSalaryItemIdsAndRequestId(salaryAcctEmployeeIds, salaryItemIds, param.getRequestId()); + } + Map map = new HashMap<>(); + Map> acctResultMap = SalaryEntityUtil.group2Map(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryItemId); + salaryItemPOS.stream().filter(item -> SalaryDataTypeEnum.NUMBER.getValue().equals(item.getDataType())).forEach(item -> { + BigDecimal sum = Optional.ofNullable(acctResultMap.get(item.getId())).orElse(new ArrayList<>()).stream().map(SalaryAcctResultPO::getResultValue).filter(NumberUtils::isCreatable).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); + map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap)); + }); + return map; + } + @Override public ConsolidatedTaxDetailDTO getConsolidatedTaxDetail(Long salaryAcctEmployeeId) { // 查询当前的薪资核算人员 diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultWZServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultWZServiceImpl.java new file mode 100644 index 000000000..ff33f5ca2 --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryAcctResultWZServiceImpl.java @@ -0,0 +1,61 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.encrypt.EncryptUtil; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; +import com.engine.salary.mapper.salaryacct.SalaryAcctResultWZMapper; +import com.engine.salary.service.SalaryAcctResultWZService; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * 薪资核算结果 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class SalaryAcctResultWZServiceImpl extends Service implements SalaryAcctResultWZService { + private EncryptUtil encryptUtil = new EncryptUtil(); + + private SalaryAcctResultWZMapper getSalaryAcctResultWZMapper() { + return MapperProxyFactory.getProxy(SalaryAcctResultWZMapper.class); + } + + @Override + public List listByAcctEmployeeIdsAndSalaryItemIdsAndRequestId(List salaryAcctEmployeeIds, Collection salaryItemIds, String requestId) { + if (CollectionUtils.isEmpty(salaryAcctEmployeeIds)) { + return Collections.emptyList(); + } + List> partition = Lists.partition((List) salaryAcctEmployeeIds, 200); + List result = new ArrayList<>(); + partition.forEach(empIds -> { + SalaryAcctResultPO build = SalaryAcctResultPO.builder().salaryAcctEmpIds(empIds).salaryItemIds(salaryItemIds).requestId(requestId).build(); + result.addAll(getSalaryAcctResultWZMapper().listSome(build)); + }); + + // 数据解密 + encryptUtil.decryptList(result, SalaryAcctResultPO.class); + return result; + } + + @Override + public void batchSave(List salaryAcctResultPOS) { + if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { + // 数据加密 + encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + List> partition = Lists.partition(salaryAcctResultPOS, 100); + partition.forEach(getSalaryAcctResultWZMapper()::batchInsert); + + } + } +} \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index fa0a889fc..862f8b328 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -13,6 +13,7 @@ import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; +import com.engine.salary.entity.salarysob.param.SyncWorkflowSettingParam; import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.SalaryValueTypeEnum; @@ -412,6 +413,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .showInWorkflow(itemParam.getShowInWorkflow() == null ? 0 : itemParam.getShowInWorkflow()) + .sumInWorkflow(itemParam.getSumInWorkflow() == null ? 0 : itemParam.getSumInWorkflow()) .build(); salarySobItems.add(salarySobItemPO); @@ -491,6 +494,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .showInWorkflow(itemParam.getShowInWorkflow() == null ? 0 : itemParam.getShowInWorkflow()) + .sumInWorkflow(itemParam.getSumInWorkflow() == null ? 0 : itemParam.getSumInWorkflow()) .build(); salarySobItems.add(salarySobItemPO); @@ -525,6 +530,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .showInWorkflow(itemParam.getShowInWorkflow() == null ? 0 : itemParam.getShowInWorkflow()) + .sumInWorkflow(itemParam.getSumInWorkflow() == null ? 0 : itemParam.getSumInWorkflow()) .build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); // 保存薪资项目是否展示 @@ -581,6 +588,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .showInWorkflow(itemParam.getShowInWorkflow() == null ? 0 : itemParam.getShowInWorkflow()) + .sumInWorkflow(itemParam.getSumInWorkflow() == null ? 0 : itemParam.getSumInWorkflow()) .build(); salarySobItems.add(salarySobItemPO); @@ -613,6 +622,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .showInWorkflow(itemParam.getShowInWorkflow() == null ? 0 : itemParam.getShowInWorkflow()) + .sumInWorkflow(itemParam.getSumInWorkflow() == null ? 0 : itemParam.getSumInWorkflow()) .build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); @@ -790,9 +801,23 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .setOriginSqlContent(valueType.equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : "") .setUseInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary()) .setDescription(salarySobItemPO.getDescription()) - .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0); + .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0) + .setShowInWorkflow(salarySobItemPO.getShowInWorkflow() == null ? 0 : salarySobItemPO.getShowInWorkflow()) + .setSumInWorkflow(salarySobItemPO.getSumInWorkflow() == null ? 0 : salarySobItemPO.getSumInWorkflow()); } return salarySobItemFormDTO; } + @Override + public void syncWorkflowSetting(SyncWorkflowSettingParam param) { + List salarySobItemPOS = getSalarySobItemMapper().listSome(SalarySobItemPO.builder().salarySobIds(param.getSalarySobIds()).salaryItemId(param.getSalaryItemId()).build()); + if (CollectionUtils.isEmpty(salarySobItemPOS)) { + throw new SalaryRunTimeException("薪资账套不存在,或薪资账套中不存在该薪资项目"); + } + salarySobItemPOS.stream().forEach(po -> { + po.setShowInWorkflow(param.getShowInWorkflow()); + po.setSumInWorkflow(param.getSumInWorkflow()); + getSalarySobItemMapper().update(po); + }); + } } diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 47baab85e..1bb154c63 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -528,6 +528,15 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctExcelService(user)::getImportField, salaryAcctRecordId); } + // 获取薪资账套中的薪资项目 + @GET + @Path("/acctresult/getSalaryItemList") + @Produces(MediaType.APPLICATION_JSON) + public String getSalaryItemList(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryAcctRecordId") Long salaryAcctRecordId) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>>(user).run(getSalaryAcctExcelService(user)::getSalaryItemList, salaryAcctRecordId); + } + //导出核算结果前生成可选的薪资项目 @GET @Path("/acctresult/exportField") @@ -612,6 +621,32 @@ public class SalaryAcctController { return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::previewImportSalaryAcctResult, param); } + @POST + @Path("/acctresult/listForWorkflow") + @Produces(MediaType.APPLICATION_JSON) + public String listForWorkflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryAcctResultWrapper(user)::listForWorkflow, param); + } + + @POST + @Path("/acctresult/sumForWorkflow") + @Produces(MediaType.APPLICATION_JSON) + public String sumForWorkflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryAcctResultWrapper(user)::sumForWorkflow, param); + } + + + // 万众 提交审批流程 + @POST + @Path("/acctresult/wzSaveWorkflow") + @Produces(MediaType.APPLICATION_JSON) + public String wzSaveWorkflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::wzSaveWorkflow, param); + } + // **********************************薪资核算结果 end*********************************/ // **********************************检验异常 start*********************************/ diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index 8ed4f0ebb..af1042d84 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -381,6 +381,19 @@ public class SalarySobController { + /** + * 将薪资项目的流程设置同步到其他薪资账套中 + */ + @POST + @Path("/item/syncWorkflowSetting") + @Produces(MediaType.APPLICATION_JSON) + public String syncWorkflowSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SyncWorkflowSettingParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySobItemWrapper(user)::syncWorkflowSetting, saveParam); + } + + + /**********************************薪资账套的薪资项目 end*********************************/ diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 8c0e6404d..9a59f9e32 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -13,7 +13,9 @@ import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; @@ -46,6 +48,10 @@ public class SalaryAcctResultWrapper extends Service { return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user); } + private SalaryAcctResultWZService getSalaryAcctResultWZService(User user) { + return ServiceUtil.getService(SalaryAcctResultWZServiceImpl.class, user); + } + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } @@ -77,6 +83,14 @@ public class SalaryAcctResultWrapper extends Service { return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { + return (SalaryAcctEmployeeService) ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); + } + + private SalaryAcctEmployeeWZService getSalaryAcctEmployeeWZService(User user) { + return (SalaryAcctEmployeeWZService) ServiceUtil.getService(SalaryAcctEmployeeWZServiceImpl.class, user); + } + /** * 薪资核算列表 * @@ -260,6 +274,55 @@ public class SalaryAcctResultWrapper extends Service { return getSalaryAcctResultService(user).checkAuth(salaryAcctRecordId); } + public Map listForWorkflow(SalaryAcctResultQueryParam param) { + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + // 查询薪资核算结果(分页) + PageInfo> page = getSalaryAcctResultService(user).listForWorkflow(param); + + // 构建薪资核算结果列表的表头 + List columns = getSalaryAcctExcelService(user).listWeaTableColumnForWorkflow(salaryAcctRecordPO, param); + + Map datas = new HashMap<>(); + datas.put("pageInfo", page); + datas.put("columns", columns); + + return datas; + } + + public void wzSaveWorkflow(SalaryAcctResultQueryParam param) { + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + if (StringUtils.isBlank(param.getRequestId())) { + throw new SalaryRunTimeException("流程id不能为空"); + } + + // 查询薪资核算人员 + List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId()); + salaryAcctEmployeePOList.stream().forEach(po -> po.setRequestId(param.getRequestId())); + // 保存到_wz表中 + getSalaryAcctEmployeeWZService(user).batchSave(salaryAcctEmployeePOList); + // 查询核算结果 + List resultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(param.getSalaryAcctRecordId()), param.getSalaryItemIds()); + resultPOS.stream().forEach(po -> po.setRequestId(param.getRequestId())); + // 保存到_wz表中 + getSalaryAcctResultWZService(user).batchSave(resultPOS); + } + + public Map sumForWorkflow(SalaryAcctResultQueryParam param) { + Map datas = new HashMap<>(); + + //合计 + Map sumRow = getSalaryAcctResultService(user).sumRowForWorkflow(param); + datas.put("sumRow", sumRow); + return datas; + } + /** * 薪资核算-校验 diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java index 1fbe0e0e0..4784b9ead 100644 --- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java @@ -13,6 +13,7 @@ import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; +import com.engine.salary.entity.salarysob.param.SyncWorkflowSettingParam; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; @@ -177,4 +178,12 @@ public class SalarySobItemWrapper extends Service { public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { return getSalarySobItemService(user).getSalaryItemForm(param); } + + /** + * 将薪资项目的流程设置同步到其他薪资账套中 + * @param param + */ + public void syncWorkflowSetting(SyncWorkflowSettingParam param) { + getSalarySobItemService(user).syncWorkflowSetting(param); + } }