You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
weaver-hrm-organization/src/com/engine/organization/service/impl/StaffServiceImpl.java

295 lines
13 KiB
Java

package com.engine.organization.service.impl;
import com.api.browser.bean.BrowserBean;
import com.api.browser.bean.SearchConditionGroup;
import com.api.browser.bean.SearchConditionItem;
import com.api.browser.bean.SearchConditionOption;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.core.impl.Service;
import com.engine.organization.component.OrganizationWeaTable;
import com.engine.organization.entity.DeleteParam;
import com.engine.organization.entity.staff.bo.StaffBO;
import com.engine.organization.entity.staff.param.StaffSearchParam;
import com.engine.organization.entity.staff.po.StaffPO;
import com.engine.organization.entity.staff.vo.StaffTableVO;
import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.mapper.staff.StaffMapper;
import com.engine.organization.mapper.staff.StaffPlanMapper;
import com.engine.organization.service.StaffService;
import com.engine.organization.util.*;
import com.engine.organization.util.db.DBType;
import com.engine.organization.util.db.MapperProxyFactory;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.StringUtil;
import weaver.general.Util;
import java.util.*;
/**
* @description: TODO
* @author:dxfeng
* @createTime: 2022/05/25
* @version: 1.0
*/
public class StaffServiceImpl extends Service implements StaffService {
private static final String RIGHT_NAME = "Staff:All";
private StaffMapper getStaffMapper() {
return MapperProxyFactory.getProxy(StaffMapper.class);
}
private StaffPlanMapper getStaffPlanMapper() {
return MapperProxyFactory.getProxy(StaffPlanMapper.class);
}
private CompMapper getCompMapper() {
return MapperProxyFactory.getProxy(CompMapper.class);
}
private DepartmentMapper getDepartmentMapper() {
return MapperProxyFactory.getProxy(DepartmentMapper.class);
}
private JobMapper getJobMapper() {
return MapperProxyFactory.getProxy(JobMapper.class);
}
@Override
public Map<String, Object> listPage(StaffSearchParam params) {
3 years ago
Map<String, Object> resultMap = new HashMap<>();
boolean hasRight = HasRightUtil.hasRight(user, RIGHT_NAME, true);
resultMap.put("hasRight", hasRight);
if (!hasRight) {
3 years ago
return resultMap;
}
// 刷新引用状态
RefreshIsUsedUtil.RefreshStaff("jcl_org_staff");
OrganizationWeaTable<StaffTableVO> table = new OrganizationWeaTable<>(user, StaffTableVO.class);
StaffPO staffPO = StaffBO.convertParamToPO(params, (long) user.getUID());
String sqlWhere = buildSqlWhere(staffPO);
table.setSqlwhere(sqlWhere);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
3 years ago
resultMap.putAll(result.getResultMap());
return resultMap;
}
@Override
public int saveStaff(StaffSearchParam param) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
StaffPO staffPO = StaffBO.convertParamToPO(param, (long) user.getUID());
return getStaffMapper().insertIgnoreNull(staffPO);
}
@Override
public int updateStaff(StaffSearchParam param) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
StaffPO staffPlanPO = StaffBO.convertParamToPO(param, (long) user.getUID());
return getStaffMapper().updateStaff(staffPlanPO);
}
@Override
public int deleteByIds(Collection<Long> ids) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
OrganizationAssert.notEmpty(ids, "请选择要删除的数据");
return getStaffMapper().deleteByIds(ids);
}
@Override
public Map<String, Object> getSearchCondition(Map<String, Object> params) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
Map<String, Object> apiDatas = new HashMap<>();
List<SearchConditionGroup> addGroups = new ArrayList<>();
List<SearchConditionItem> conditionItems = new ArrayList<>();
// 方案
3 years ago
SearchConditionItem planIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "方案", "161", "planId", "staffPlanBrowser");
// 分部
3 years ago
SearchConditionItem compIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "分部", "161", "compId", "compBrowser");
// 部门
3 years ago
SearchConditionItem deptIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "部门", "161", "deptId", "deptBrowser");
// 岗位
3 years ago
SearchConditionItem jobIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "岗位", "161", "jobId", "jobBrowser");
// 编制数
SearchConditionItem staffNumItem = OrganizationFormItemUtil.inputNumberItem(user, 2, 16, 2, "编制数", "staffNum");
// 在编
SearchConditionItem permanentNumItem = OrganizationFormItemUtil.inputNumberItem(user, 2, 16, 2, "在编", "permanentNum");
// 冻结数
SearchConditionItem freezeNumItem = OrganizationFormItemUtil.inputNumberItem(user, 2, 16, 2, "冻结数", "freezeNum");
// 缺编状态
List<SearchConditionOption> selectOptions = new ArrayList<>();
SearchConditionOption lackOption = new SearchConditionOption("1", "缺编");
SearchConditionOption fullOption = new SearchConditionOption("2", "满员");
SearchConditionOption overOption = new SearchConditionOption("3", "超编");
selectOptions.add(lackOption);
selectOptions.add(fullOption);
selectOptions.add(overOption);
SearchConditionItem lackStatusItem = OrganizationFormItemUtil.selectItem(user, selectOptions, 2, 16, 6, false, "缺编状态", "lackStatus");
// 编制描述
SearchConditionItem staffDescItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "编制描述", "staffDesc");
// 说明
SearchConditionItem descriptionItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "说明", "description");
3 years ago
conditionItems.add(planIdItem);
conditionItems.add(compIdItem);
conditionItems.add(deptIdItem);
conditionItems.add(jobIdItem);
conditionItems.add(staffNumItem);
conditionItems.add(permanentNumItem);
conditionItems.add(freezeNumItem);
conditionItems.add(lackStatusItem);
conditionItems.add(staffDescItem);
conditionItems.add(descriptionItem);
addGroups.add(new SearchConditionGroup("高级搜索条件", true, conditionItems));
apiDatas.put("conditions", addGroups);
return apiDatas;
}
@Override
public Map<String, Object> getForm(Map<String, Object> params) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
Map<String, Object> apiDatas = new HashMap<>();
List<SearchConditionItem> selectItems = new ArrayList<>();
List<SearchConditionGroup> addGroups = new ArrayList<>();
// 方案
SearchConditionItem planIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "方案", "161", "planId", "staffPlanBrowser");
planIdItem.setRules("required|string");
// 分部
SearchConditionItem compIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "分部", "161", "compId", "compBrowser");
compIdItem.setRules("required|string");
// 部门
SearchConditionItem deptIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "部门", "161", "deptId", "deptBrowser");
deptIdItem.setRules("required|string");
// 岗位
SearchConditionItem jobIdItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 3, false, "岗位", "161", "jobId", "jobBrowser");
jobIdItem.setRules("required|string");
// 编制数
SearchConditionItem staffNumItem = OrganizationFormItemUtil.inputNumberItem(user, 2, 16, 3, "编制数", "staffNum");
staffNumItem.setRules("required");
// 控制策略
List<SearchConditionOption> selectOptions = new ArrayList<>();
SearchConditionOption option1 = new SearchConditionOption("1", "弱控");
SearchConditionOption option2 = new SearchConditionOption("2", "强控");
SearchConditionOption option3 = new SearchConditionOption("3", "不控");
selectOptions.add(option1);
selectOptions.add(option2);
selectOptions.add(option3);
SearchConditionItem controlPolicyItem = OrganizationFormItemUtil.selectItem(user, selectOptions, 2, 16, 6, false, "控制策略", "controlPolicy");
controlPolicyItem.setViewAttr(3);
controlPolicyItem.setRules("required|string");
// 编辑状态下赋值操作
String id = Util.null2String(params.get("id"));
if (!StringUtil.isEmpty(id)) {
StaffPO staffPO = getStaffMapper().getStaffByID(Integer.parseInt(id));
OrganizationAssert.notNull(staffPO, "选择的数据不存在,或数据已删除");
BrowserBean planIdItemBean = planIdItem.getBrowserConditionParam();
List<Map<String, Object>> planIdMaps = getStaffPlanMapper().listPlansByIds(DeleteParam.builder().ids(staffPO.getPlanId().toString()).build().getIds());
3 years ago
planIdItemBean.setReplaceDatas(planIdMaps);
planIdItem.setBrowserConditionParam(planIdItemBean);
3 years ago
BrowserBean compIdItemBean = compIdItem.getBrowserConditionParam();
List<Map<String, Object>> compIdMaps = getCompMapper().listCompsByIds(DeleteParam.builder().ids(staffPO.getPlanId().toString()).build().getIds());
3 years ago
compIdItemBean.setReplaceDatas(compIdMaps);
compIdItem.setBrowserConditionParam(compIdItemBean);
BrowserBean deptIdItemBean = deptIdItem.getBrowserConditionParam();
List<Map<String, Object>> deptIdMaps = getDepartmentMapper().listDeptsByIds(DeleteParam.builder().ids(staffPO.getPlanId().toString()).build().getIds());
3 years ago
deptIdItemBean.setReplaceDatas(deptIdMaps);
deptIdItem.setBrowserConditionParam(deptIdItemBean);
BrowserBean jobIdItemBean = jobIdItem.getBrowserConditionParam();
List<Map<String, Object>> jobIdMaps = getJobMapper().listJobsByIds(DeleteParam.builder().ids(staffPO.getPlanId().toString()).build().getIds());
jobIdItemBean.setReplaceDatas(jobIdMaps);
jobIdItem.setBrowserConditionParam(jobIdItemBean);
3 years ago
staffNumItem.setValue(staffPO.getStaffNum());
controlPolicyItem.setValue(staffPO.getControlPolicy());
}
3 years ago
selectItems.add(planIdItem);
selectItems.add(compIdItem);
selectItems.add(deptIdItem);
selectItems.add(jobIdItem);
selectItems.add(staffNumItem);
selectItems.add(controlPolicyItem);
addGroups.add(new SearchConditionGroup("基本信息", true, selectItems));
apiDatas.put("condition", addGroups);
return apiDatas;
}
@Override
public Map<String, Object> getHasRight() {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
return MenuBtn.getCommonBtnDatas();
}
/**
*
*
* @param staffPO
* @return
*/
private String buildSqlWhere(StaffPO staffPO) {
DBType dbType = DBType.get(new RecordSet().getDBType());
String sqlWhere = " where t.delete_type ='0' ";
Long planId = staffPO.getPlanId();
if (null != planId) {
sqlWhere += " AND t.plan_id = '" + planId + "'";
}
Long compId = staffPO.getCompId();
if (null != compId) {
sqlWhere += " AND t.comp_id = '" + compId + "'";
}
Long deptId = staffPO.getDeptId();
if (null != deptId) {
sqlWhere += " AND t.dept_id = '" + deptId + "'";
}
Long jobId = staffPO.getJobId();
if (null != jobId) {
sqlWhere += " AND t.job_id = '" + jobId + "'";
}
Integer staffNum = staffPO.getStaffNum();
if (null != staffNum) {
sqlWhere += " AND t.staff_num = '" + staffNum + "'";
}
Integer controlPolicy = staffPO.getControlPolicy();
if (null != controlPolicy) {
sqlWhere += " AND t.control_policy = '" + controlPolicy + "'";
}
Integer permanentNum = staffPO.getPermanentNum();
if (null != permanentNum) {
sqlWhere += " AND t.permanent_num = '" + permanentNum + "'";
}
Integer freezeNum = staffPO.getFreezeNum();
if (null != freezeNum) {
sqlWhere += " AND t.freeze_num = '" + freezeNum + "'";
}
Integer lackStatus = staffPO.getLackStatus();
if (null != lackStatus) {
sqlWhere += " AND t.lack_status = '" + lackStatus + "'";
}
String staffDesc = staffPO.getStaffDesc();
if (StringUtils.isNotBlank(staffDesc)) {
sqlWhere += " AND t.staff_desc " + dbType.like(staffDesc);
}
String description = staffPO.getDescription();
if (StringUtils.isNotBlank(description)) {
sqlWhere += " AND t.description " + dbType.like(description);
}
return sqlWhere;
}
3 years ago
}