编制模块

pull/210/head
Chengliang 2 years ago
parent eee636230d
commit 7cb3b019a8

@ -1,9 +1,7 @@
package com.engine.organization.entity.staff.bo;
import com.engine.organization.entity.staff.param.StaffSearchParam;
import com.engine.organization.entity.staff.param.StaffParams;
import com.engine.organization.entity.staff.po.StaffPO;
import com.engine.organization.transmethod.StaffTransMethod;
import weaver.general.Util;
import java.util.Arrays;
import java.util.Date;
@ -15,7 +13,7 @@ import java.util.List;
* @version: 1.0
*/
public class StaffBO {
public static StaffPO convertParamToPO(StaffSearchParam param, Long employeeId) {
public static StaffPO convertParamToPO(StaffParams param, Long employeeId) {
if (param == null) {
return null;
}

@ -15,7 +15,7 @@ import lombok.NoArgsConstructor;
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StaffSearchParam {
public class StaffParams {
/**
*
*/

@ -0,0 +1,85 @@
package com.engine.organization.entity.staff.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @description:
* @author:dxfeng
* @createTime: 2022/05/25
* @version: 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StaffSerachParam {
/**
*
*/
private Long id;
/**
* id
*/
private String planId;
/**
*
*/
private Integer compId;
private Integer ecCompany;
/**
*
*/
private Integer deptId;
private Integer ecDepartment;
/**
*
*/
private Integer jobId;
/**
*
*/
private Integer staffNum;
/**
*
*/
private Integer controlPolicy;
/**
*
*/
private Integer permanentNum;
/**
*
*/
private Integer freezeNum;
/**
*
*/
private Integer lackStatus;
/**
*
*/
private String staffDesc;
/**
*
*/
private String description;
/**
*
*/
private String staffName;
/**
*
*/
private Integer changeNum;
/**
*
*/
private String changeDescription;
}

@ -41,7 +41,7 @@ public interface StaffMapper {
* @param: [planId, companyId, departmentId, jobId]
* @return: com.engine.organization.entity.staff.po.StaffPO
*/
StaffPO customSelect(@Param("planId") Integer planId,@Param("companyId") Integer companyId, @Param("departmentId") Integer departmentId, @Param("jobId") Integer jobId);
List<StaffPO> customSelect(@Param("planId") Integer planId,@Param("companyId") Integer companyId, @Param("departmentId") Integer departmentId, @Param("jobId") Integer jobId);
/**
*
@ -81,4 +81,10 @@ public interface StaffMapper {
* @return
*/
StaffPO getStaffsByParamId(@Param("ftype") Integer ftype,@Param("compId") String compId,@Param("deptId") String deptId,@Param("jobId") String jobId);
List<StaffPO> selectByEcCompany(@Param("companyIds") Collection<Integer> companyIds);
List<StaffPO> selectByEcDepartment(@Param("departmentIds") Collection<Integer> departmentIds);
}

@ -371,4 +371,29 @@
and a.job_id = #{jobId}
</if>
</select>
<select id="selectByEcCompany" resultMap="BaseResultMap">
select
<include refid="baseColumns"/>
from jcl_org_staff t
WHERE delete_type = 0
AND control_policy = 1
AND ec_company IN
<foreach collection="companyIds" open="(" item="companyId" separator="," close=")">
#{companyId}
</foreach>
</select>
<select id="selectByEcDepartment" resultMap="BaseResultMap">
select
<include refid="baseColumns"/>
from jcl_org_staff t
WHERE delete_type = 0
AND control_policy = 2
AND ec_department IN
<foreach collection="departmentIds" open="(" item="departmentId" separator="," close=")">
#{departmentIds}
</foreach>
</select>
</mapper>

@ -1,6 +1,7 @@
package com.engine.organization.service;
import com.engine.organization.entity.staff.param.StaffSearchParam;
import com.engine.organization.entity.staff.param.StaffParams;
import com.engine.organization.entity.staff.param.StaffSerachParam;
import java.util.Collection;
import java.util.Map;
@ -18,14 +19,14 @@ public interface StaffService {
* @param params
* @return
*/
Map<String, Object> listPage(StaffSearchParam params);
Map<String, Object> listPage(StaffSerachParam params);
/**
*
* @param param
* @return
*/
int saveStaff(StaffSearchParam param);
int saveStaff(StaffParams param);
/**
*
@ -33,7 +34,7 @@ public interface StaffService {
* @param param
* @return
*/
int updateStaff(StaffSearchParam param);
int updateStaff(StaffParams param);
/**
* ID

@ -6,12 +6,14 @@ import com.engine.organization.enums.StaffChangeEnum;
import com.engine.organization.mapper.staff.StaffMapper;
import com.engine.organization.util.OrganizationAssert;
import com.engine.organization.util.db.MapperProxyFactory;
import lombok.SneakyThrows;
import org.apache.commons.collections.CollectionUtils;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Author liang.cheng
@ -94,7 +96,8 @@ public class FunctionOutStaffServiceImpl {
.mapToInt(Integer::intValue)
.sum();
staffPO.setPermanentNum(sum);
// todo 向上部门 分部在编数调整
//向上部门 分部在编数调整
upwardReviewSums(param);
//2.调整方式为流程时释放冻结数
if (param.getChangeMode() == 1) {
List<Integer> numbersF = Arrays.asList(staffPO.getFreezeNum(),param.getNum());
@ -115,7 +118,8 @@ public class FunctionOutStaffServiceImpl {
.reduce((a, b) -> a - b)
.orElse(0);
staffPO.setPermanentNum(difference);
// todo 向上部门 分部在编数调整
//向上部门 分部在编数调整
upwardReviewSums(param);
//2.调整方式为流程时释放冻结数
if (param.getChangeMode() == 1) {
List<Integer> numbersF = Arrays.asList(staffPO.getFreezeNum(),param.getNum());
@ -133,10 +137,65 @@ public class FunctionOutStaffServiceImpl {
}
/**
* @Description:
* @Author: liang.cheng
* @Date: 2023/9/6 3:38 PM
* @param: [param]
* @return: void
*/
@SneakyThrows
private void upwardReviewSums(StaffOutParam param){
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
//1.分部
if (param.getCompany() != null) {
String allSupCompany = subCompanyComInfo.getAllSupCompany(String.valueOf(param.getCompany()));
if (!"".equals(allSupCompany)) {
Collection<Integer> subCompanys = Arrays.stream(allSupCompany.split(","))
.map(Integer::parseInt)
.collect(Collectors.toList());
List<StaffPO> staffPOS = staffMapper().selectByEcCompany(subCompanys);
if (!CollectionUtils.isEmpty(staffPOS)) {
staffPOS.forEach(item -> {
if (param.getType().getValue() == 3){
item.setPermanentNum(item.getPermanentNum() + param.getNum());
}else {
item.setPermanentNum(item.getPermanentNum() - param.getNum());
}
staffMapper().updateStaff(item);
});
}
}
}
//2.部门
if (param.getDepartment() != null) {
String allSupDepartment = departmentComInfo.getAllSupDepartment(String.valueOf(param.getDepartment()));
if ("".equals(allSupDepartment)) {
Collection<Integer> subDepartments = Arrays.stream(allSupDepartment.split(","))
.map(Integer::parseInt)
.collect(Collectors.toList());
List<StaffPO> staffPOS = staffMapper().selectByEcDepartment(subDepartments);
if (!CollectionUtils.isEmpty(staffPOS)) {
staffPOS.forEach(item -> {
if (param.getType().getValue() == 3){
item.setPermanentNum(item.getPermanentNum() + param.getNum());
}else {
item.setPermanentNum(item.getPermanentNum() - param.getNum());
}
staffMapper().updateStaff(item);
});
}
}
}
}
private StaffPO select(StaffOutParam param) {
StaffPO staffPO = staffMapper().customSelect(param.getPlanId(), param.getCompany(), param.getDepartment(), param.getJob());
List<StaffPO> staffPO = staffMapper().customSelect(param.getPlanId(), param.getCompany(), param.getDepartment(), param.getJob());
OrganizationAssert.notNull(staffPO,"未查询到对应编制方案下的组织编制信息!");
return staffPO;
return staffPO.get(0);
}
private static void buildStaffPO(StaffPO staffPO) {

@ -13,11 +13,13 @@ import com.engine.organization.entity.browser.po.CustomBrowserBean;
import com.engine.organization.entity.department.po.DepartmentPO;
import com.engine.organization.entity.job.po.JobPO;
import com.engine.organization.entity.staff.bo.StaffBO;
import com.engine.organization.entity.staff.param.StaffSearchParam;
import com.engine.organization.entity.staff.param.StaffParams;
import com.engine.organization.entity.staff.param.StaffSerachParam;
import com.engine.organization.entity.staff.po.StaffPO;
import com.engine.organization.entity.staff.po.StaffPlanPO;
import com.engine.organization.entity.staff.po.StaffsPO;
import com.engine.organization.entity.staff.vo.StaffTableVO;
import com.engine.organization.exception.OrganizationRunTimeException;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.mapper.staff.StaffMapper;
@ -104,7 +106,7 @@ public class StaffServiceImpl extends Service implements StaffService {
@Override
public Map<String, Object> listPage(StaffSearchParam params) {
public Map<String, Object> listPage(StaffSerachParam params) {
Map<String, Object> resultMap = new HashMap<>();
boolean hasRight = HasRightUtil.hasRight(user, RIGHT_NAME, true);
resultMap.put("hasRight", hasRight);
@ -124,12 +126,14 @@ public class StaffServiceImpl extends Service implements StaffService {
}
@Override
public int saveStaff(StaffSearchParam param) {
public int saveStaff(StaffParams param) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
StaffPO staffPO = StaffBO.convertParamToPO(param, (long) user.getUID());
OrganizationAssert.isFalse(staffPO.getStaffNum() < 0, "编制数不可小于0请更正");
StaffPO verify = getStaffMapper().customSelect(param.getPlanId(), param.getEcCompany(), param.getEcDepartment(), param.getJobId());
OrganizationAssert.isNull(verify,"同一编制方案下,同一维度的编制信息不可重复创建!");
List<StaffPO> verify = getStaffMapper().customSelect(param.getPlanId(), param.getEcCompany(), param.getEcDepartment(), param.getJobId());
if(!verify.isEmpty()){
throw new OrganizationRunTimeException("同一编制方案下,同一维度的编制信息不可重复创建!");
}
checkRequired(staffPO);
int ignoreNull = getStaffMapper().insertIgnoreNull(staffPO);
// 初始化编制在编数
@ -138,10 +142,12 @@ public class StaffServiceImpl extends Service implements StaffService {
}
@Override
public int updateStaff(StaffSearchParam param) {
public int updateStaff(StaffParams param) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
StaffPO verify = getStaffMapper().customSelect(param.getPlanId(), param.getEcCompany(), param.getEcDepartment(), param.getJobId());
OrganizationAssert.isNull(verify,"同一编制方案下,同一维度的编制信息不可重复创建!");
List<StaffPO> verify = getStaffMapper().customSelect(param.getPlanId(), param.getEcCompany(), param.getEcDepartment(), param.getJobId());
if (verify.size() > 1) {
throw new OrganizationRunTimeException("同一编制方案下,同一维度的编制信息已存在!");
}
StaffPO staffByID = getStaffMapper().getStaffByID(param.getId());
StaffPO staffPO = StaffBO.convertParamToPO(param, (long) user.getUID());
staffPO.setPermanentNum(staffByID.getPermanentNum());
@ -339,7 +345,7 @@ public class StaffServiceImpl extends Service implements StaffService {
List<SearchConditionGroup> addGroups = new ArrayList<>();
List<SearchConditionItem> selectItems = new ArrayList<>();
// 方案
SearchConditionItem planIdItem = OrganizationFormItemUtil.browserItem(user, 4, 3, 2, false, "编制方案", "161", "planId", "staffPlanBrowser");
SearchConditionItem planIdItem = OrganizationFormItemUtil.browserItem(user, 4, 3, 2, false, "编制方案", "162", "planId", "staffPlanBrowser");
planIdItem.setRules("required|string");
planIdItem.setHelpfulTip("请选择编制方案后查看数据");
planIdItem.setLabelcol(2);
@ -356,13 +362,13 @@ public class StaffServiceImpl extends Service implements StaffService {
* @param param
* @return
*/
private String buildSqlWhere(StaffSearchParam param) {
private String buildSqlWhere(StaffSerachParam param) {
DBType dbType = DBType.get(new RecordSet().getDBType());
String sqlWhere = " where t.delete_type ='0' ";
Integer planId = param.getPlanId();
if (null != planId) {
sqlWhere += " AND t.plan_id = '" + planId + "'";
String planId = param.getPlanId();
if ("".equals(planId)) {
sqlWhere += " AND t.plan_id in (" + planId + ")";
} else {
sqlWhere = " where 1 = 2 ";
}

@ -7,7 +7,7 @@ import com.engine.organization.entity.extend.po.ExtendInfoPO;
import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO;
import com.engine.organization.entity.job.po.JobPO;
import com.engine.organization.entity.staff.bo.StaffBO;
import com.engine.organization.entity.staff.param.StaffSearchParam;
import com.engine.organization.entity.staff.param.StaffParams;
import com.engine.organization.entity.staff.po.StaffPO;
import com.engine.organization.entity.staff.po.StaffPlanPO;
import com.engine.organization.mapper.comp.CompMapper;
@ -239,7 +239,7 @@ public class StaffInfoImportUtil {
OrgImportUtil.saveImportDetailLog(historyDetailPO);
continue;
}
StaffSearchParam param = JSONObject.toJavaObject((JSON) JSONObject.toJSON(map), StaffSearchParam.class);
StaffParams param = JSONObject.toJavaObject((JSON) JSONObject.toJSON(map), StaffParams.class);
String controlDimension = staffPlanPO.getControlDimension();
String checkMsg = "";
switch (controlDimension) {

@ -5,7 +5,8 @@ import com.alibaba.fastjson.JSONObject;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.organization.entity.DeleteParam;
import com.engine.organization.entity.staff.param.StaffSearchParam;
import com.engine.organization.entity.staff.param.StaffParams;
import com.engine.organization.entity.staff.param.StaffSerachParam;
import com.engine.organization.util.response.ReturnResult;
import com.engine.organization.wrapper.StaffWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
@ -47,7 +48,7 @@ public class StaffController {
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
StaffSearchParam param = JSONObject.toJavaObject((JSON) JSON.toJSON(map), StaffSearchParam.class);
StaffSerachParam param = JSONObject.toJavaObject((JSON) JSON.toJSON(map), StaffSerachParam.class);
return ReturnResult.successed(getStaffWrapper(user).listPage(param));
} catch (Exception e) {
return ReturnResult.exceptionHandle(e);
@ -64,7 +65,7 @@ public class StaffController {
@POST
@Path("/saveStaff")
@Produces(MediaType.APPLICATION_JSON)
public ReturnResult saveStaff(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffSearchParam param) {
public ReturnResult saveStaff(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffParams param) {
try {
User user = HrmUserVarify.getUser(request, response);
return ReturnResult.successed(getStaffWrapper(user).saveStaff(param));
@ -84,7 +85,7 @@ public class StaffController {
@POST
@Path("/updateStaff")
@Produces(MediaType.APPLICATION_JSON)
public ReturnResult updateStaff(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffSearchParam param) {
public ReturnResult updateStaff(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody StaffParams param) {
try {
User user = HrmUserVarify.getUser(request, response);
return ReturnResult.successed(getStaffWrapper(user).updateStaff(param));

@ -3,7 +3,8 @@ package com.engine.organization.wrapper;
import com.alibaba.fastjson.JSON;
import com.engine.common.util.ServiceUtil;
import com.engine.organization.annotation.Log;
import com.engine.organization.entity.staff.param.StaffSearchParam;
import com.engine.organization.entity.staff.param.StaffSerachParam;
import com.engine.organization.entity.staff.param.StaffParams;
import com.engine.organization.entity.staff.po.StaffPO;
import com.engine.organization.entity.staff.po.StaffPlanPO;
import com.engine.organization.enums.LogModuleNameEnum;
@ -12,7 +13,6 @@ import com.engine.organization.mapper.staff.StaffMapper;
import com.engine.organization.mapper.staff.StaffPlanMapper;
import com.engine.organization.service.StaffService;
import com.engine.organization.service.impl.StaffServiceImpl;
import com.engine.organization.util.MenuBtn;
import com.engine.organization.util.OrganizationWrapper;
import com.engine.organization.util.db.MapperProxyFactory;
import weaver.hrm.User;
@ -47,7 +47,7 @@ public class StaffWrapper extends OrganizationWrapper {
* @param params
* @return
*/
public Map<String, Object> listPage(StaffSearchParam params) {
public Map<String, Object> listPage(StaffSerachParam params) {
return getStaffService(user).listPage(params);
}
@ -58,7 +58,7 @@ public class StaffWrapper extends OrganizationWrapper {
* @return
*/
@Log(operateType = OperateTypeEnum.ADD, operateModule = LogModuleNameEnum.STAFF, operateDesc = "新增编制上报")
public int saveStaff(StaffSearchParam param) {
public int saveStaff(StaffParams param) {
int saveStaff = getStaffService(user).saveStaff(param);
writeOperateLog(new Object() {
}.getClass(), getStaffPlanMapper().getStaffPlanByID(param.getPlanId()).getPlanName(), JSON.toJSONString(param), "新增编制上报");
@ -72,7 +72,7 @@ public class StaffWrapper extends OrganizationWrapper {
* @return
*/
@Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.STAFF, operateDesc = "更新编制上报")
public int updateStaff(StaffSearchParam param) {
public int updateStaff(StaffParams param) {
StaffPO staffByID = getStaffMapper().getStaffByID(param.getId());
int updateStaff = getStaffService(user).updateStaff(param);
writeOperateLog(new Object() {

Loading…
Cancel
Save