花名册模板接口

钱智金融
Chengliang 1 month ago
parent ad5400dfaf
commit 036a1c3a26

@ -0,0 +1,34 @@
package com.engine.qz.service;
import com.engine.qz.entity.CustomTemplateVo;
import com.engine.qz.entity.TemplateFieldsPo;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* @version 1.0
* @Title ecology-9
* @Company
* @CreateDate 2025/3/10
* @Description ${description}
* @Author Lee
*/
public interface CustomRosterService {
/**
* @param paramMap
* @return
*/
Map<String, Object> listPage(Map<String, Object> paramMap);
/**
*
*
* @param
* @return
*/
LinkedList<TemplateFieldsPo> customFieldMap();
}

@ -0,0 +1,421 @@
package com.engine.qz.service.impl;
import b.a.a.w.e;
import com.cloudstore.eccom.constant.WeaBoolAttr;
import com.cloudstore.eccom.pc.table.WeaTable;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.pc.table.WeaTableType;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.qz.entity.CustomTemplateVo;
import com.engine.qz.entity.TemplateFieldsPo;
import com.engine.qz.service.CustomRosterService;
import com.engine.qz.service.HrmCustomTemplateService;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.PageIdConst;
import weaver.hrm.User;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class CustomRosterServiceImpl extends Service implements CustomRosterService {
private static RecordSet rs = new RecordSet();
private BaseBean bb = new BaseBean();
private HrmCustomTemplateService getService(User user) {
return ServiceUtil.getService(HrmCustomTemplateServiceImpl.class, user);
}
@Override
public Map<String, Object> listPage(Map<String, Object> paramMap) {
BaseBean bb = new BaseBean();
String sqlWhere = " where ISNUMERIC(workcode)=1 and ISNULL(t1.accounttype, 0) != 1";
String fromSql = getSqlFrom(paramMap);
Map<String, Object> resultMap = new HashMap<>(4);
try {
//字段对照关系
HashMap<String, Map<String, String>> fieldMap = new HashMap<>();
String sql = "select id,chinese,dataName,transMethod,width from uf_roster_field";
rs.execute(sql);
while (rs.next()) {
HashMap<String, String> map = new HashMap<>();
map.put("chinese", rs.getString("chinese"));
map.put("transMethod", rs.getString("transMethod"));
map.put("width", rs.getString("width"));
fieldMap.put(rs.getString("dataName"), map);
}
WeaTable table = new WeaTable();
String pageId = "73ed858b37304757987724e81d096ff2";
table.setPageID(pageId);
table.setPageUID(String.format("%s_%s", pageId, user.getUID()));
String pageSize = PageIdConst.getPageSize(pageId, user.getUID());
table.setPagesize(pageSize);
//获取显示字段
String fields = getFields(user, rs);
if (StringUtils.isEmpty(fields)) {
resultMap.put("msg", "fields is null");
return resultMap;
}
table.setBackfields(fields);
table.setSqlform(fromSql);
table.setSqlwhere(sqlWhere);
table.setSqlprimarykey("id");
table.getColumns().add(new WeaTableColumn("id").setDisplay(WeaBoolAttr.FALSE));
// table.getColumns().add(new WeaTableColumn("10%", "性别", "sex").setTransmethod("com.engine.kqsolution.util.ResourceSnipUtils.selectSexName"));
for (String tableKey : fields.split(",")) {
String lk = StringUtils.isNotEmpty(fieldMap.get(tableKey).get("width")) ? fieldMap.get(tableKey).get("width") : "10%";
String transMethod = fieldMap.get(tableKey).get("transMethod");
String chinese = fieldMap.get(tableKey).get("chinese");
WeaTableColumn column = new WeaTableColumn(lk, chinese, tableKey).setTransmethod(transMethod);
table.getColumns().add(column);
}
table.setTableType(WeaTableType.NONE);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
resultMap.putAll(result.getResultMap());
} catch (Exception e) {
bb.writeLog("CustomRosterService-e-" + e.getMessage());
return resultMap;
}
return resultMap;
}
@Override
public LinkedList<TemplateFieldsPo> customFieldMap() {
LinkedList<TemplateFieldsPo> linkedList = new LinkedList<TemplateFieldsPo>();
try {
String compareId = "," + user.getUID() + ",";
String compareDept = "," + user.getUserDepartment() + ",";
String compareCompany = "," + user.getUserSubCompany1() + ",";
RecordSet rs2 = new RecordSet();
//查询默认可展示字段
String sql = "select id,chinese,dataName,defaultShow,zdjs,zdrlzy,zdfb,zdbm from uf_roster_field order by id asc";
CustomRosterServiceImpl.rs.executeQuery(sql);
while (CustomRosterServiceImpl.rs.next()) {
String defaultShow = CustomRosterServiceImpl.rs.getString("defaultShow");
String roleIds = CustomRosterServiceImpl.rs.getString("zdjs");
String members = "," + CustomRosterServiceImpl.rs.getString("zdrlzy") + ",";
String companyIds = CustomRosterServiceImpl.rs.getString("zdfb");
String departments = CustomRosterServiceImpl.rs.getString("zdbm");
TemplateFieldsPo fieldsPo = TemplateFieldsPo.builder().id(CustomRosterServiceImpl.rs.getString("id")).
fieldName(CustomRosterServiceImpl.rs.getString("chinese")).
fieldDataName(CustomRosterServiceImpl.rs.getString("dataName")).
build();
//默认显示的字段
if ("0".equals(defaultShow)) {
linkedList.add(fieldsPo);
} else {
if (members.contains(compareId)) {
linkedList.add(fieldsPo);
continue;
}
//当前人员的部门和分部,是否在权限下
String s1 = "," + companyIds + ",";
String s2 = "," + departments + ",";
if (s1.contains(compareCompany) || s2.contains(compareDept)) {
linkedList.add(fieldsPo);
continue;
}
//查询角色成员中是否当前人员
if (StringUtils.isNotEmpty(roleIds) && isRoleContainsCurrentUser(rs2, roleIds)) {
linkedList.add(fieldsPo);
}
}
}
} catch (Exception e) {
bb.writeLog("customFields-e-" + e.getMessage());
}
return linkedList;
}
private boolean isRoleContainsCurrentUser(RecordSet rs2, String roleIds) {
String sql = "select resourceid from HrmRoleMembers where roleid in(" + roleIds + ") and resourceid=?";
rs2.executeQuery(sql, user.getUID());
if (rs2.next()) {
return true;
}
return false;
}
private String getFields(User user, RecordSet rs) {
String fields = "";
//先查询是否有模板,有则取模板字段
LinkedList<CustomTemplateVo> customTemplate = getService(user).getCustomTemplate();
List<CustomTemplateVo> filteredList = customTemplate.stream()
.filter(vo -> vo.getIsused() != null && vo.getIsused() == 1)
.collect(Collectors.toList());
if (filteredList.size() > 0) {
CustomTemplateVo templateVo = filteredList.get(0);
//查询模板对应字段
String sql = "select dataName from uf_roster_field where id in (" + templateVo.getTemplateFields() + ")";
rs.executeQuery(sql);
while (rs.next()) {
fields += rs.getString("dataName") + ",";
}
} else {
//取默认显示字段
String sql = "select dataName from uf_roster_field where defaultShow=0";
rs.executeQuery(sql);
while (rs.next()) {
fields += rs.getString("dataName") + ",";
}
return fields.substring(0, fields.lastIndexOf(","));
}
return fields;
}
private String getSqlFrom(Map<String, Object> paramMap) {
String fromSql = " from view_yghmc ";
String referDate = (String) paramMap.get("referDate");
if (StringUtils.isNotEmpty(referDate)) {
fromSql = "WITH htxy AS (\n" +
" SELECT \n" +
" ygxm, \n" +
" htgsmc, \n" +
" zt, \n" +
" htqsrq, \n" +
" htzzrq, \n" +
" qdcs,\n" +
" ROW_NUMBER() OVER (\n" +
" PARTITION BY ygxm\n" +
" ORDER BY htzzrq DESC, htqsrq DESC\n" +
" ) AS RowNum\n" +
" FROM uf_htxy\n" +
"),\n" +
"zlxx AS (\n" +
" SELECT \n" +
" xm, \n" +
" COUNT(*) AS zlsl, \n" +
" MAX(csrq) AS zlcsrq\n" +
" FROM uf_shgx\n" +
" WHERE gx = 1\n" +
" GROUP BY xm\n" +
"),\n" +
"jjlxrxx AS (\n" +
" SELECT \n" +
" xm, \n" +
" gx, \n" +
" lxrxm, \n" +
" dh,\n" +
" ROW_NUMBER() OVER (\n" +
" PARTITION BY xm\n" +
" ORDER BY id DESC\n" +
" ) AS RowNum\n" +
" FROM uf_shgx\n" +
" WHERE sfjjlxr = 0\n" +
"),\n" +
"rzjl AS (\n" +
" SELECT \n" +
" yg, \n" +
" bdhgw, \n" +
" bdhbm,\n" +
" bdhzt,\n" +
" bdhygxz,\n" +
" shenxrq,\n" +
" ROW_NUMBER() OVER (PARTITION BY yg ORDER BY shenxrq DESC) AS rn\n" +
" FROM uf_rzjl where shenxrq>='" + referDate + "'\n" +
"),\n" +
"khbhqxxrg AS (\n" +
" SELECT id,ygxm,\n" +
" ROW_NUMBER() OVER (PARTITION BY ygxm ORDER BY id DESC) AS rn\n" +
" FROM uf_khbhqxxrg where lx=0 and ksrq<='" + referDate + "' and jsrq>='" + referDate + "'\n" +
"),\n" +
"rzlc AS (\n" +
" SELECT \n" +
" *,\n" +
" ROW_NUMBER() OVER (\n" +
" PARTITION BY rzryid \n" +
" ORDER BY rzsj DESC\n" +
" ) AS RowNum \n" +
" FROM formtable_main_36\n" +
")\n" +
"\n" +
"SELECT \n" +
" t1.id,\n" +
" t1.workcode,\n" +
" t1.lastname,\n" +
"\n" +
" SUBSTRING(t10.IDpath, 0, \n" +
" CASE WHEN CHARINDEX('>', t10.IDpath) != 0 \n" +
" THEN CHARINDEX('>', t10.IDpath) \n" +
" ELSE 20 END\n" +
" ) AS FB1,\n" +
" CASE WHEN CHARINDEX('>', t10.IDpath) != 0 \n" +
" THEN SUBSTRING(t10.IDpath, CHARINDEX('>', t10.IDpath) + 1, 20) \n" +
" ELSE NULL END AS FB2,\n" +
" SUBSTRING(t9.IDpath, 0, \n" +
" CASE WHEN CHARINDEX('>', t9.IDpath) != 0 \n" +
" THEN CHARINDEX('>', t9.IDpath) \n" +
" ELSE 20 END\n" +
" ) AS BM1,\n" +
" CASE \n" +
" WHEN CHARINDEX('>', t9.IDpath) != 0 \n" +
" AND CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) != 0 \n" +
" THEN SUBSTRING(t9.IDpath, \n" +
" CHARINDEX('>', t9.IDpath) + 1, \n" +
" CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) - CHARINDEX('>', t9.IDpath) - 1)\n" +
" WHEN CHARINDEX('>', t9.IDpath) != 0 \n" +
" THEN SUBSTRING(t9.IDpath, CHARINDEX('>', t9.IDpath) + 1, 20) \n" +
" ELSE NULL \n" +
" END AS BM2,\n" +
" CASE \n" +
" WHEN CHARINDEX('>', t9.IDpath) != 0 \n" +
" AND CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) != 0 \n" +
" AND CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) + 1) != 0 \n" +
" THEN SUBSTRING(t9.IDpath, \n" +
" CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) + 1, \n" +
" CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) + 1) - CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) - 1)\n" +
" WHEN CHARINDEX('>', t9.IDpath) != 0 \n" +
" AND CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) != 0 \n" +
" THEN SUBSTRING(t9.IDpath, \n" +
" CHARINDEX('>', t9.IDpath, CHARINDEX('>', t9.IDpath) + 1) + 1, 20) \n" +
" ELSE NULL \n" +
" END AS BM3,\n" +
" \n" +
" -- 工作信息\n" +
" t8.bdhgw AS gwmc,\n" +
" t3.field21 AS gwdj,\n" +
" t3.field45 AS ygzj,\n" +
" t1.certificatenum,\n" +
" t1.mobile,\n" +
" t1.birthday,\n" +
" t4.field62 AS srrqlx,\n" +
" DATEDIFF(DAY, \n" +
" CASE WHEN ISDATE(SUBSTRING(t1.certificatenum, 7, 8)) = 1 \n" +
" THEN SUBSTRING(t1.certificatenum, 7, 8) \n" +
" ELSE t1.birthday END, \n" +
" GETDATE()\n" +
" ) / 365 AS age,\n" +
" t8.bdhzt as \"status\",\n" +
" t8.bdhygxz as usekind,\n" +
" t1.sex,\n" +
" t1.companystartdate,\n" +
" t3.field18 AS jrjtrq,\n" +
" t3.field59 AS zzrq,\n" +
" t4.field14 AS gryx,\n" +
" t1.educationlevel,\n" +
" t4.field44 AS dyxlbyyx,\n" +
" t4.field22 AS zy,\n" +
" t4.field58 AS xllb,\n" +
" t1.degree,\n" +
" \n" +
" -- 合同信息\n" +
" t5.htqsrq,\n" +
" t5.htzzrq,\n" +
" t5.qdcs,\n" +
" t5.htgsmc,\n" +
" \n" +
" -- 个人信息\n" +
" t1.maritalstatus,\n" +
" t6.zlsl,\n" +
" t6.zlcsrq,\n" +
" t1.height,\n" +
" t1.weight,\n" +
" t1.policy,\n" +
" t1.nativeplace,\n" +
" t1.folk,\n" +
" t1.regresidentplace,\n" +
" t4.field12 AS hjdz,\n" +
" t1.residentplace,\n" +
" t7.lxrxm,\n" +
" t7.gx,\n" +
" t7.dh,\n" +
" t1.workstartdate,\n" +
" t1.workyear,\n" +
" t1.companyworkyear,t2.deptpath,\n" +
" DATEDIFF(DAY, t8.shenxrq, GETDATE()) / 365 AS gl,\n" +
" CASE WHEN t5.ygxm IS NOT NULL \n" +
" THEN '已签订' \n" +
" ELSE '未签订' \n" +
" END AS sfqdht,\n" +
" t3.field29 AS sfgb,\n" +
" t3.field40 AS gbqx,\n" +
" t3.field31 AS qccjg,\n" +
" t3.field32 AS dyzysq,\n" +
" t3.field33 AS zymb,\n" +
" t3.field34 AS grqkbc,\n" +
" t3.field35 AS wdd,\n" +
" t3.field36 AS jrzxm,\n" +
" t3.field37 AS jrzcsd,\n" +
" t3.field38 AS ydyyd,\n" +
" t3.field39 AS djls,\n" +
" t1.textfield2 AS ah,\n" +
" t1.textfield1 AS tc,\n" +
" t4.field48 AS xg,\n" +
" t3.field42 AS zply,\n" +
" t3.field43 AS lymx,\n" +
" t3.field60 AS sfecrz,\n" +
" lizhiyewuleixing,\n" +
" t14.yuangongjianyi,\n" +
" t14.rszy_1,\n" +
" t14.rszy_2,\n" +
" t14.lzxxyyzjsj,\n" +
" t14.lzxxyygsyy,\n" +
" t14.lzxxyyygyy,\n" +
" t14.lzhlxfs,\n" +
" t14.ywxz,\n" +
" t14.rszy_4,\n" +
" t14.xczy_1,\n" +
" t3.field64,\n" +
" CASE WHEN t1.seclevel >= 60 \n" +
" THEN '总部' \n" +
" ELSE SUBSTRING(t10.NAMEPath, 0, \n" +
" CASE WHEN CHARINDEX('>', t10.NAMEPath) != 0 \n" +
" THEN CHARINDEX('>', t10.NAMEPath) \n" +
" ELSE 20 END\n" +
" ) \n" +
" END AS SYZZ,\n" +
" \n" +
" t1.degree,\n" +
" t16.ntry,\n" +
" t16.sfstwjr,\n" +
" t17.ylzgs,\n" +
" t18.hm,\n" +
" t18.khyx,\n" +
" t18.zh,\n" +
" t18.gjjzh,\n" +
" CASE WHEN t15.id is not null then '是' else '否' end AS SFKHQ\n" +
"FROM hrmresource t1\n" +
"LEFT JOIN view_dept t2 ON t2.deptid = t1.departmentid\n" +
"LEFT JOIN cus_fielddata t3 ON t3.id = t1.id AND t3.scopeid = 3\n" +
"LEFT JOIN cus_fielddata t4 ON t4.id = t1.id AND t4.scopeid = 1\n" +
"LEFT JOIN htxy t5 ON t5.ygxm = t1.id AND t5.RowNum = 1 \n" +
"LEFT JOIN zlxx t6 ON t6.xm = t1.id\n" +
"LEFT JOIN jjlxrxx t7 ON t7.xm = t1.id AND t7.RowNum = 1\n" +
"LEFT JOIN rzjl t8 ON t8.rn = 1 and t1.id = t8.yg AND t8.bdhgw = t3.field13\n" +
"LEFT JOIN View_QZ_Department t9 ON t9.id = t8.bdhbm\n" +
"LEFT JOIN View_QZ_Subcompany t10 ON t10.id = (select subcompanyid1 from HrmDepartment where id=t8.bdhbm )\n" +
"LEFT JOIN ( \n" +
" SELECT t11.* \n" +
" FROM formtable_main_35 t11 \n" +
" LEFT JOIN workflow_requestbase t12 \n" +
" ON t11.requestId = t12.requestid \n" +
" WHERE t12.currentnodetype = 3\n" +
") t14 ON t1.id = t14.sqr\n" +
"LEFT JOIN khbhqxxrg t15 ON t15.rn=1 and t1.id = t15.ygxm\n" +
"LEFT JOIN rzlc t16 ON t16.rzryid = t1.id AND t16.RowNum = 1\n" +
"LEFT JOIN formtable_main_71 t17 ON t17.requestId = t16.yglydx\n" +
"LEFT JOIN uf_yhk t18 ON t1.id = t18.xm \n" +
" AND t18.yt LIKE '%0%' \n" +
" AND ISNULL(t18.qyzt, 0) = 0\n";
return fromSql;
}
return fromSql;
}
}

@ -2,23 +2,26 @@ package com.engine.qz.service.impl;
import com.api.hrm.bean.FieldItem; import com.api.hrm.bean.FieldItem;
import com.api.hrm.util.FieldType; import com.api.hrm.util.FieldType;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.engine.qz.entity.CustomTemplateVo; import com.engine.qz.entity.CustomTemplateVo;
import com.engine.qz.entity.CustomTranscerDataVo; import com.engine.qz.entity.CustomTranscerDataVo;
import com.engine.qz.entity.EditTableColumn; import com.engine.qz.entity.EditTableColumn;
import com.engine.qz.entity.TemplateFieldsPo; import com.engine.qz.entity.TemplateFieldsPo;
import com.engine.qz.service.CustomRosterService;
import com.engine.qz.service.HrmCustomTemplateService; import com.engine.qz.service.HrmCustomTemplateService;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import weaver.general.TimeUtil; import weaver.general.TimeUtil;
import weaver.general.Util; import weaver.general.Util;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
import weaver.hrm.User;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static weaver.general.Util.getIntValue;
/** /**
@ -30,11 +33,16 @@ import static weaver.general.Util.getIntValue;
public class HrmCustomTemplateServiceImpl extends Service implements HrmCustomTemplateService { public class HrmCustomTemplateServiceImpl extends Service implements HrmCustomTemplateService {
private CustomRosterService getService(User user) {
return ServiceUtil.getService(CustomRosterServiceImpl.class,user);
}
@Override @Override
public CustomTranscerDataVo getCustomTransferData(Map<String, Object> params) { public CustomTranscerDataVo getCustomTransferData(Map<String, Object> params) {
//1.所有可查看字段 todo 权限控制获取) //1.所有可查看字段 todo 权限控制获取)
LinkedList<TemplateFieldsPo> transferDatas = rosterList(); //LinkedList<TemplateFieldsPo> transferDatas = rosterList();
LinkedList<TemplateFieldsPo> transferDatas = getService(user).customFieldMap();
//2.存在模板 且已经选择的字段 //2.存在模板 且已经选择的字段
LinkedList<CustomTemplateVo> customTemplate = getCustomTemplate(); LinkedList<CustomTemplateVo> customTemplate = getCustomTemplate();
@ -181,7 +189,7 @@ public class HrmCustomTemplateServiceImpl extends Service implements HrmCustomTe
LinkedList<String> keyList = customTemplateList.stream() LinkedList<String> keyList = customTemplateList.stream()
.map(CustomTemplateVo::getKey) .map(CustomTemplateVo::getKey)
.collect(Collectors.toCollection(LinkedList::new)); .collect(Collectors.toCollection(LinkedList::new));
int rowNum = getIntValue((String) params.get("rownum")); int rowNum = Util.getIntValue((String) params.get("rownum"));
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
for (int i = 0; i < rowNum; i++) { for (int i = 0; i < rowNum; i++) {
String recordIndex = "_" + i; String recordIndex = "_" + i;

Loading…
Cancel
Save