医博项目--更新薪资核算状态
This commit is contained in:
parent
1263514a81
commit
0b4e41d871
|
|
@ -0,0 +1,3 @@
|
|||
alter table hrsa_salary_acct_emp add calculate_status int;
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
alter table hrsa_salary_acct_emp add calculate_status int;
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
alter table hrsa_salary_acct_emp add calculate_status int;
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
alter table hrsa_salary_acct_emp add calculate_status int
|
||||
;
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
alter table hrsa_salary_acct_emp add calculate_status int
|
||||
/
|
||||
|
|
@ -0,0 +1 @@
|
|||
alter table hrsa_salary_acct_emp add calculate_status int
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
alter table hrsa_salary_acct_emp add calculate_status int
|
||||
GO
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
alter table hrsa_salary_acct_emp add calculate_status int;
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package com.api.salary.web;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/06/18
|
||||
* @version: 1.0
|
||||
*/
|
||||
@Path("/bs/hrmsalary/ybsalarycalculate")
|
||||
public class YbSalaryCalculateController extends com.engine.salary.web.YbSalaryCalculateController {
|
||||
}
|
||||
|
|
@ -77,17 +77,17 @@ public class SalaryAcctRecordBO {
|
|||
}
|
||||
} else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){
|
||||
btnList.add(new WeaTableOperate("查看", null, "3"));
|
||||
if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) {
|
||||
btnList.add(new WeaTableOperate("重新核算", null, "4"));
|
||||
}
|
||||
if(salaryAcctRecordPO.getBackCalcStatus() == null || salaryAcctRecordPO.getBackCalcStatus() == NumberUtils.INTEGER_ZERO) {
|
||||
btnList.add(new WeaTableOperate("回算", null, "5"));
|
||||
}
|
||||
//if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) {
|
||||
// btnList.add(new WeaTableOperate("重新核算", null, "4"));
|
||||
//}
|
||||
//if(salaryAcctRecordPO.getBackCalcStatus() == null || salaryAcctRecordPO.getBackCalcStatus() == NumberUtils.INTEGER_ZERO) {
|
||||
// btnList.add(new WeaTableOperate("回算", null, "5"));
|
||||
//}
|
||||
} else {
|
||||
btnList.add(new WeaTableOperate("查看", null, "3"));
|
||||
if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) {
|
||||
btnList.add(new WeaTableOperate("重新核算", null, "4"));
|
||||
}
|
||||
//if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) {
|
||||
// btnList.add(new WeaTableOperate("重新核算", null, "4"));
|
||||
//}
|
||||
}
|
||||
String taxAgentName = salarySobPO.getTaxAgentIds().stream().map(id -> taxAgentMap.getOrDefault(id, "")).collect(Collectors.joining(","));
|
||||
return SalaryAcctRecordListDTO.builder()
|
||||
|
|
|
|||
|
|
@ -326,6 +326,7 @@ public class SalaryAcctResultBO {
|
|||
}
|
||||
map.put(salarySobEmpField.getFieldCode() + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue());
|
||||
}
|
||||
map.put("calculateStatus",e.getCalculateStatus());
|
||||
// 主键id
|
||||
map.put("id", e.getId());
|
||||
//锁定数据
|
||||
|
|
|
|||
|
|
@ -164,6 +164,8 @@ public class SalaryAcctEmployeePO {
|
|||
*/
|
||||
private Integer accountType;
|
||||
|
||||
private String calculateStatus;
|
||||
|
||||
|
||||
|
||||
//--------条件----------
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
<result column="status" property="status"/>
|
||||
<result column="lock_items" property="lockItems" typeHandler="com.engine.salary.handle.SalaryListTypeHandler"/>
|
||||
<result column="account_type" property="accountType"/>
|
||||
<result column="calculate_status" property="calculateStatus"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="SalaryAccEmployeeCountMap"
|
||||
|
|
@ -62,7 +63,8 @@
|
|||
t.jobcall_id,
|
||||
t.status,
|
||||
t.lock_items,
|
||||
t.account_type
|
||||
t.account_type,
|
||||
t.calculate_status
|
||||
</sql>
|
||||
|
||||
<sql id="emp1Column">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.engine.salary.mapper.yb;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/06/18
|
||||
* @version: 1.0
|
||||
*/
|
||||
public interface YbSalaryCalculateMapper {
|
||||
int updateCalculateStatus(@Param("id") String id, @Param("calculateStatus") String calculateStatus);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.engine.salary.mapper.yb.YbSalaryCalculateMapper">
|
||||
|
||||
<resultMap id="SalaryAccEmployeeMap"
|
||||
type="com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO">
|
||||
<id column="id" property="id"/>
|
||||
<result column="salary_acct_record_id" property="salaryAcctRecordId"/>
|
||||
<result column="salary_sob_id" property="salarySobId"/>
|
||||
<result column="employee_id" property="employeeId"/>
|
||||
<result column="tax_agent_id" property="taxAgentId"/>
|
||||
<result column="salary_month" property="salaryMonth"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
<result column="creator" property="creator"/>
|
||||
<result column="delete_type" property="deleteType"/>
|
||||
<result column="tenant_key" property="tenantKey"/>
|
||||
<result column="employee_type" property="employeeType"/>
|
||||
<result column="lock_status" property="lockStatus"/>
|
||||
<result column="subcompany_name" property="subcompanyName"/>
|
||||
<result column="subcompany_id" property="subcompanyId"/>
|
||||
<result column="department_name" property="departmentName"/>
|
||||
<result column="department_id" property="departmentId"/>
|
||||
<result column="jobtitle_name" property="jobtitleName"/>
|
||||
<result column="jobtitle_id" property="jobtitleId"/>
|
||||
<result column="jobcall" property="jobcall"/>
|
||||
<result column="jobcall_id" property="jobcallId"/>
|
||||
<result column="status" property="status"/>
|
||||
<result column="lock_items" property="lockItems" typeHandler="com.engine.salary.handle.SalaryListTypeHandler"/>
|
||||
<result column="account_type" property="accountType"/>
|
||||
</resultMap>
|
||||
|
||||
<update id="updateCalculateStatus">
|
||||
update hrsa_salary_acct_emp set calculate_status = #{calculateStatus} where id = #{id}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.engine.salary.service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/06/18
|
||||
* @version: 1.0
|
||||
*/
|
||||
public interface YbSalaryCalculateService {
|
||||
/**
|
||||
* 更新薪资核算状态
|
||||
*
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> updateCalculateStatus(Map<String, Object> params);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.engine.salary.service.impl;
|
||||
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.mapper.yb.YbSalaryCalculateMapper;
|
||||
import com.engine.salary.service.YbSalaryCalculateService;
|
||||
import com.engine.salary.util.db.MapperProxyFactory;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/06/18
|
||||
* @version: 1.0
|
||||
*/
|
||||
public class YbSalaryCalculateServiceImpl extends Service implements YbSalaryCalculateService {
|
||||
private YbSalaryCalculateMapper getYbSalaryCalculateMapper() {
|
||||
return MapperProxyFactory.getProxy(YbSalaryCalculateMapper.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> updateCalculateStatus(Map<String, Object> params) {
|
||||
String id = Util.null2String(params.get("id"));
|
||||
String calculateStatus = Util.null2String(params.get("calculateStatus"));
|
||||
// 更新
|
||||
getYbSalaryCalculateMapper().updateCalculateStatus(id, calculateStatus);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
package com.engine.salary.web;
|
||||
|
||||
import com.engine.common.util.ParamUtil;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.util.ResponseResult;
|
||||
import com.engine.salary.wrapper.YbSalaryCalculateWrapper;
|
||||
import weaver.hrm.HrmUserVarify;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/06/18
|
||||
* @version: 1.0
|
||||
*/
|
||||
public class YbSalaryCalculateController {
|
||||
private YbSalaryCalculateWrapper getYbSalaryCalculateWrapper(User user) {
|
||||
return ServiceUtil.getService(YbSalaryCalculateWrapper.class, user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 浮动薪酬项目列表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@POST
|
||||
@Path("/updateCalculateStatus")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String updateCalculateStatus(@Context HttpServletRequest request, @Context HttpServletResponse response) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
Map<String, Object> map = ParamUtil.request2Map(request);
|
||||
return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getYbSalaryCalculateWrapper(user)::updateCalculateStatus, map);
|
||||
}
|
||||
}
|
||||
|
|
@ -27,6 +27,7 @@ import weaver.hrm.User;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
/**
|
||||
* 薪资核算结果
|
||||
|
|
@ -101,6 +102,25 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult
|
|||
Map<String, Object> datas = new HashMap<>();
|
||||
datas.put("pageInfo", page);
|
||||
datas.put("columns", columns);
|
||||
//
|
||||
List<Map<String, Object>> list = page.getList();
|
||||
boolean allApproved = true;
|
||||
String calculateMsg = null;
|
||||
|
||||
// 使用流查找第一个未通过记录的索引
|
||||
OptionalInt firstUnapprovedIndex = IntStream.range(0, list.size())
|
||||
.filter(i -> !"1".equals(list.get(i).get("calculateStatus")))
|
||||
.findFirst();
|
||||
|
||||
if (firstUnapprovedIndex.isPresent()) {
|
||||
allApproved = false;
|
||||
calculateMsg = "序号" + (firstUnapprovedIndex.getAsInt() + 1) + "未完成审批,请勾选后再提交";
|
||||
}
|
||||
|
||||
datas.put("calculateAll", allApproved);
|
||||
if (!allApproved) {
|
||||
datas.put("calculateMsg", calculateMsg);
|
||||
}
|
||||
|
||||
return datas;
|
||||
}
|
||||
|
|
@ -230,7 +250,7 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult
|
|||
// 检查是否正在核算中
|
||||
ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId());
|
||||
if (Objects.nonNull(salaryAcctProgressDTO) && salaryAcctProgressDTO.isStatus() && Optional.ofNullable(salaryAcctProgressDTO.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) {
|
||||
log.warn("正在核算中,无法再次执行"+calculateParam.getSalaryAcctRecordId());
|
||||
log.warn("正在核算中,无法再次执行" + calculateParam.getSalaryAcctRecordId());
|
||||
return;
|
||||
}
|
||||
// 初始化进度
|
||||
|
|
|
|||
|
|
@ -30,10 +30,8 @@ import org.apache.commons.collections4.CollectionUtils;
|
|||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_ACCT_FIXED_COLUMNS;
|
||||
|
||||
|
|
@ -155,6 +153,26 @@ public class SalaryApprovalWrapper extends Service {
|
|||
datas.put("pageInfo", page);
|
||||
datas.put("columns", columns);
|
||||
|
||||
//
|
||||
List<Map<String, Object>> list = page.getList();
|
||||
boolean allApproved = true;
|
||||
String calculateMsg = null;
|
||||
|
||||
// 使用流查找第一个未通过记录的索引
|
||||
OptionalInt firstUnapprovedIndex = IntStream.range(0, list.size())
|
||||
.filter(i -> !"1".equals(list.get(i).get("calculateStatus")))
|
||||
.findFirst();
|
||||
|
||||
if (firstUnapprovedIndex.isPresent()) {
|
||||
allApproved = false;
|
||||
calculateMsg = "序号" + (firstUnapprovedIndex.getAsInt() + 1) + "未完成审批,请勾选后再提交";
|
||||
}
|
||||
|
||||
datas.put("calculateAll", allApproved);
|
||||
if (!allApproved) {
|
||||
datas.put("calculateMsg", calculateMsg);
|
||||
}
|
||||
|
||||
return datas;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package com.engine.salary.wrapper;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.service.YbSalaryCalculateService;
|
||||
import com.engine.salary.service.impl.YbSalaryCalculateServiceImpl;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/06/18
|
||||
* @version: 1.0
|
||||
*/
|
||||
public class YbSalaryCalculateWrapper extends Service {
|
||||
private YbSalaryCalculateService getYbSalaryCalculateService(User user) {
|
||||
return ServiceUtil.getService(YbSalaryCalculateServiceImpl.class, user);
|
||||
}
|
||||
|
||||
public Map<String, Object> updateCalculateStatus(Map<String, Object> params) {
|
||||
return getYbSalaryCalculateService(user).updateCalculateStatus(params);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue