diff --git a/resource/sqlupgrade/DM/sql202506180103AHGYXT.sql b/resource/sqlupgrade/DM/sql202506180103AHGYXT.sql new file mode 100644 index 000000000..a2a7f2f56 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202506180103AHGYXT.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add mark_items varchar2(4000) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202506180103AHGYXT.sql b/resource/sqlupgrade/GS/sql202506180103AHGYXT.sql new file mode 100644 index 000000000..a2a7f2f56 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202506180103AHGYXT.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add mark_items varchar2(4000) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202506180103AHGYXT.sql b/resource/sqlupgrade/JC/sql202506180103AHGYXT.sql new file mode 100644 index 000000000..a2a7f2f56 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202506180103AHGYXT.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add mark_items varchar2(4000) NULL; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202506180103AHGYXT.sql b/resource/sqlupgrade/Mysql/sql202506180103AHGYXT.sql new file mode 100644 index 000000000..3d93d6cb0 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202506180103AHGYXT.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_salary_acct_emp ADD COLUMN mark_items varchar(4000); \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202506180103AHGYXT.sql b/resource/sqlupgrade/Oracle/sql202506180103AHGYXT.sql new file mode 100644 index 000000000..147795248 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202506180103AHGYXT.sql @@ -0,0 +1,2 @@ +alter table hrsa_salary_acct_emp add mark_items varchar2(4000) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202506180103AHGYXT.sql b/resource/sqlupgrade/PG/sql202506180103AHGYXT.sql new file mode 100644 index 000000000..f83707fa6 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202506180103AHGYXT.sql @@ -0,0 +1 @@ +alter table hrsa_salary_acct_emp add mark_items varchar(4000); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202506180103AHGYXT.sql b/resource/sqlupgrade/SQLServer/sql202506180103AHGYXT.sql new file mode 100644 index 000000000..4025ec9b5 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202506180103AHGYXT.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_salary_acct_emp ADD mark_items varchar(4000) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202506180103AHGYXT.sql b/resource/sqlupgrade/ST/sql202506180103AHGYXT.sql new file mode 100644 index 000000000..a2a7f2f56 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202506180103AHGYXT.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add mark_items varchar2(4000) NULL; +/ + diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index b906a6a37..84a2a4bb4 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -330,6 +330,7 @@ public class SalaryAcctResultBO { map.put("id", e.getId()); //锁定数据 map.put("lockItems", e.getLockItems() != null ? e.getLockItems().stream().filter(Objects::nonNull).map(Object::toString).collect(Collectors.toList()) : new ArrayList<>()); + map.put("markItems", e.getMarkItems() != null ? e.getMarkItems().stream().filter(Objects::nonNull).map(Object::toString).collect(Collectors.toList()) : new ArrayList<>()); //人员id map.put("employeeId", e.getEmployeeId()); // 个税扣缴义务人 diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultMarkParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultMarkParam.java new file mode 100644 index 000000000..1e9a0600e --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultMarkParam.java @@ -0,0 +1,34 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.enums.salaryaccounting.LockStatusEnum; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资数据单元格标记 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SalaryAcctResultMarkParam { + //标记状态 + @DataCheck(require = true,message = "标记状态不能为空") + private LockStatusEnum lockStatus; + + //薪资核算人员Id + @DataCheck(require = true,message = "薪资核算人员不能为空") + private Long acctEmpId; + + //薪资项目的Id + @DataCheck(require = true,message = "薪资项目不能为空") + private Long salaryItemId; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index c456e80da..218d43dd8 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -158,6 +158,9 @@ public class SalaryAcctEmployeePO { //锁定的项目 private List lockItems; + //标记的项目 + private List markItems; + /** * 主次账号 0/null:主账号 1:次账号 diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java index a7f66818a..ab4e92c0a 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java @@ -126,4 +126,5 @@ public interface SalaryAcctEmployeeMapper { void updateIgnoreNull(@Param("salaryAcctEmployeePO")SalaryAcctEmployeePO salaryAcctEmployeePO); void lock(SalaryAcctEmployeePO salaryAcctEmployeePO); + void mark(SalaryAcctEmployeePO salaryAcctEmployeePO); } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 9aeca4df9..224bf7aaf 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -26,6 +26,7 @@ + @@ -62,6 +63,7 @@ t.jobcall_id, t.status, t.lock_items, + t.mark_items, t.account_type @@ -1032,6 +1034,7 @@ + @@ -1062,6 +1065,7 @@ , t.jobcall_id , t.status , t.lock_items + , t.mark_items , t.account_type @@ -1247,4 +1251,14 @@ WHERE id = #{id} AND delete_type = 0 + + + UPDATE hrsa_salary_acct_emp + + mark_items = + #{markItems, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + WHERE id = #{id} AND delete_type = 0 + + diff --git a/src/com/engine/salary/service/SalaryAcctEmployeeService.java b/src/com/engine/salary/service/SalaryAcctEmployeeService.java index 2d858a9ab..a2bac8c3b 100644 --- a/src/com/engine/salary/service/SalaryAcctEmployeeService.java +++ b/src/com/engine/salary/service/SalaryAcctEmployeeService.java @@ -270,4 +270,5 @@ public interface SalaryAcctEmployeeService { void updateIgnoreNull(SalaryAcctEmployeePO salaryAcctEmployeePO); void lock(SalaryAcctEmployeePO salaryAcctEmployeePO); + void mark(SalaryAcctEmployeePO salaryAcctEmployeePO); } diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index ac7309950..93fea1424 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -164,6 +164,7 @@ public interface SalaryAcctResultService { * @param param */ void lock(SalaryAcctResultLockParam param); + void mark(SalaryAcctResultMarkParam param); /** diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 1ad833b52..52a808332 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -16,8 +16,8 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; -import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.salarysob.param.SalarySobQueryParam; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; @@ -31,7 +31,6 @@ import com.engine.salary.mapper.salarysob.SobTaxLinkMapper; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.report.entity.param.SalaryStatisticsReportDataQueryParam; import com.engine.salary.service.*; -import com.engine.salary.sys.constant.SalarySysConstant; import com.engine.salary.service.auth.AuthService; import com.engine.salary.service.auth.AuthServiceImpl; import com.engine.salary.sys.constant.SalarySysConstant; @@ -870,4 +869,9 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct public void lock(SalaryAcctEmployeePO salaryAcctEmployeePO) { getSalaryAcctEmployeeMapper().lock(salaryAcctEmployeePO); } + + @Override + public void mark(SalaryAcctEmployeePO salaryAcctEmployeePO) { + getSalaryAcctEmployeeMapper().mark(salaryAcctEmployeePO); + } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 0c093a6d1..b0f0d6c46 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1050,6 +1050,29 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe getSalaryAcctEmployeeService(user).lock(salaryAcctEmployeePO); } + @Override + public void mark(SalaryAcctResultMarkParam param) { + ValidUtil.doValidator(param); + + SalaryAcctEmployeePO salaryAcctEmployeePO = getSalaryAcctEmployeeService(user).getById(param.getAcctEmpId()); + if (salaryAcctEmployeePO == null) { + return; + } + + List markItemIds = salaryAcctEmployeePO.getMarkItems() == null ? new ArrayList<>() : salaryAcctEmployeePO.getMarkItems(); + Long salaryItemId = param.getSalaryItemId(); + + if (param.getLockStatus() == LockStatusEnum.LOCK) { + markItemIds.add(salaryItemId); + } else { + markItemIds.removeIf(salaryItemId::equals); + } + + salaryAcctEmployeePO.setLockItems(Lists.newArrayList(new HashSet(markItemIds))); + + getSalaryAcctEmployeeService(user).mark(salaryAcctEmployeePO); + } + @Override public void updateLockStatusByParam(SalaryAcctResultUpdateLockStatusParam updateParam) { List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(updateParam.getSalaryAcctRecordId()); diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index a196d53ef..cf27b0ebd 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -463,6 +463,13 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::save, param); } + @POST + @Path("/acctresult/mark") + @Produces(MediaType.APPLICATION_JSON) + public String mark(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultMarkParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::mark, param); + } @POST @Path("/acctresult/lock") diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 097092b2e..0866ca9a3 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -193,6 +193,9 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult getSalaryAcctResultService(user).save(saveParam); } + public void mark(SalaryAcctResultMarkParam param) { + getSalaryAcctResultService(user).mark(param); + } public void lock(SalaryAcctResultLockParam param) { getSalaryAcctResultService(user).lock(param);