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);