Compare commits

...

5 Commits

@ -1,6 +1,6 @@
<component name="ArtifactManager">
<artifact type="jar" name="weaver-develop:jar">
<output-path>$PROJECT_DIR$/out/artifacts/weaver_develop_jar</output-path>
<output-path>$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib</output-path>
<root id="archive" name="weaver-develop.jar">
<element id="module-output" name="weaver-develop" />
</root>

@ -0,0 +1,13 @@
package com.api.qz.controller;
import javax.ws.rs.Path;
/**
* @Author Apple
* @Date 2025/2/24 11:08
* @Description:
* @Version 1.0
*/
@Path("/qz/hrm/resource")
public class HrmCustomTemplateAction extends com.engine.qz.controller.HrmCustomTemplateAction {
}

@ -0,0 +1,156 @@
package com.engine.qz.controller;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.qz.service.HrmCustomTemplateService;
import com.engine.qz.service.impl.HrmCustomTemplateServiceImpl;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.Map;
/**
* @Author Apple
* @Date 2025/2/24 11:07
* @Description:
* @Version 1.0
*/
public class HrmCustomTemplateAction {
private HrmCustomTemplateService getService(User user) {
return ServiceUtil.getService(HrmCustomTemplateServiceImpl.class,user);
}
@GET
@Path("/getCustomTransferData")
@Produces(MediaType.TEXT_PLAIN)
public String getCustomTransferData(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
data.put("result",getService(user).getCustomTransferData(map));
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
@GET
@Path("/getCustomTemplate")
@Produces(MediaType.TEXT_PLAIN)
public String getCustomTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
data.put("result",getService(user).getCustomTemplate());
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
@GET
@Path("/getTemplateSelectKeys")
@Produces(MediaType.TEXT_PLAIN)
public String getTemplateSelectKeys(@Context HttpServletRequest request, @Context HttpServletResponse response,
@QueryParam("templateId") String templateId){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
data.put("result",getService(user).getTemplateSelectKeys(templateId));
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
@POST
@Path("/addCustomTemplate")
@Produces(MediaType.TEXT_PLAIN)
public String addCustomTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
data.putAll(getService(user).addCustomTemplate(map));
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
@POST
@Path("/updateCustomTemplateFields")
@Produces(MediaType.TEXT_PLAIN)
public String updateCustomTemplateFields(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
getService(user).updateCustomTemplateFields(map);
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
@GET
@Path("/customTemplateTable")
@Produces(MediaType.TEXT_PLAIN)
public String customTemplateTable(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
data.put("result",getService(user).customTemplateTable());
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
@POST
@Path("/saveCustomTemplateTable")
@Produces(MediaType.TEXT_PLAIN)
public String saveCustomTemplateTable(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
getService(user).saveCustomTemplateTable(map);
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
}

@ -0,0 +1,33 @@
package com.engine.qz.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author Apple
* @Date 2025/3/11 13:50
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CustomTemplateVo {
private String key;
private String showname;
private String templateFields;
private Integer isused;
private Integer belongto;
private String modedatacreatedate;
}

@ -0,0 +1,29 @@
package com.engine.qz.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.LinkedList;
/**
* @Author Apple
* @Date 2025/3/11 13:50
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CustomTranscerDataVo {
private String templateId;
private LinkedList<TemplateFieldsPo> transferDatas;
private LinkedList<String> transferKeys;
}

@ -0,0 +1,30 @@
package com.engine.qz.entity;
import com.api.hrm.util.FieldType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author Apple
* @Date 2025/3/13 09:40
* @Description:
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class EditTableColumn {
private String fieldName;
private String fieldNameDesc;
private FieldType fieldType;
private Integer viewAttr;
}

@ -0,0 +1,28 @@
package com.engine.qz.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author Apple
* @Date 2025/3/11 13:50
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TemplateFieldsPo {
private String id;
private String fieldName;
private String fieldDataName;
}

@ -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,80 @@
package com.engine.qz.service;
import com.engine.qz.entity.CustomTemplateVo;
import com.engine.qz.entity.CustomTranscerDataVo;
import java.util.LinkedList;
import java.util.Map;
/**
* @Author Apple
* @Date 2025/2/24 11:08
* @Description:
* @Version 1.0
*/
public interface HrmCustomTemplateService {
/**
* @Description:
* @Author: Apple
* @param: [params]
* @return: CustomTranscerDataVo
*/
CustomTranscerDataVo getCustomTransferData(Map<String, Object> params);
/**
* @Description:
* @Author: Apple
* @Date: 2025/3/11 13:49
* @param: [params]
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
LinkedList<CustomTemplateVo> getCustomTemplate();
/**
* @Description:
* @Author: Apple
* @Date: 2025/3/11 13:49
* @param: [params]
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
Map<String, Object> addCustomTemplate(Map<String, Object> params);
/**
* @Description:
* @Author: Apple
* @Date: 2025/3/11 13:49
* @param: [params]
* @return: void
*/
void updateCustomTemplateFields(Map<String, Object> params);
/**
* @Description:
* @Author: Apple
* @Date: 2025/3/11 13:49
* @param: templateId
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
LinkedList<String> getTemplateSelectKeys(String templateId);
/**
* @Description:
* @Author: Apple
* @Date: 2025/3/11 13:49
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
Map<String, Object> customTemplateTable();
/**
* @Description:
* @Author: Apple
* @Date: 2025/3/11 13:49
*/
void saveCustomTemplateTable(Map<String, Object> params);
}

@ -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;
}
}

@ -0,0 +1,247 @@
package com.engine.qz.service.impl;
import com.api.hrm.bean.FieldItem;
import com.api.hrm.util.FieldType;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.qz.entity.CustomTemplateVo;
import com.engine.qz.entity.CustomTranscerDataVo;
import com.engine.qz.entity.EditTableColumn;
import com.engine.qz.entity.TemplateFieldsPo;
import com.engine.qz.service.CustomRosterService;
import com.engine.qz.service.HrmCustomTemplateService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.conn.RecordSet;
import weaver.hrm.User;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author Apple
* @Date 2025/2/24 11:08
* @Description:
* @Version 1.0
*/
public class HrmCustomTemplateServiceImpl extends Service implements HrmCustomTemplateService {
private CustomRosterService getService(User user) {
return ServiceUtil.getService(CustomRosterServiceImpl.class,user);
}
@Override
public CustomTranscerDataVo getCustomTransferData(Map<String, Object> params) {
//1.所有可查看字段 todo 权限控制获取)
//LinkedList<TemplateFieldsPo> transferDatas = rosterList();
LinkedList<TemplateFieldsPo> transferDatas = getService(user).customFieldMap();
//2.存在模板 且已经选择的字段
LinkedList<CustomTemplateVo> customTemplate = getCustomTemplate();
Optional<CustomTemplateVo> result = customTemplate.stream()
.filter(vo -> vo.getIsused() == 1)
.findFirst();
LinkedList<String> transferKeys = new LinkedList<>();
CustomTemplateVo customTemplateVo = new CustomTemplateVo();
if (result.isPresent()) {
customTemplateVo = result.get();
transferKeys.addAll(Arrays.asList(customTemplateVo.getTemplateFields().split(",")));
} else {
//(todo 无模板或不存在启用模板)
}
return CustomTranscerDataVo.builder().templateId(customTemplateVo.getKey()).transferDatas(transferDatas).transferKeys(transferKeys).build();
}
@Override
public LinkedList<CustomTemplateVo> getCustomTemplate() {
RecordSet rs = new RecordSet();
LinkedList<CustomTemplateVo> customTemplateVos = new LinkedList<>();
rs.executeQuery("select id,templateName,templateFields,isused,belongto,modedatacreatedate from uf_custom_template \n" +
"where belongto = ? order by id asc",user.getUID());
while (rs.next()) {
customTemplateVos.add(CustomTemplateVo.builder()
.key(Util.null2String(rs.getString("id")))
.showname(Util.null2String(rs.getString("templateName")))
.templateFields(Util.null2String(rs.getString("templateFields")))
.isused(Util.getIntValue(rs.getString("isused")))
.belongto(Util.getIntValue(rs.getString("belongto")))
.modedatacreatedate(Util.null2String(rs.getString("modedatacreatedate")))
.build());
}
//todo 没有模板或者模版都没启用
return customTemplateVos;
}
@Override
public Map<String, Object> addCustomTemplate(Map<String, Object> params) {
String customTemplateName = Util.null2String(params.get("showname"));
String fields = Util.null2String(params.get("fields"));
String currentDate = TimeUtil.getCurrentDateString();
String currentTime = TimeUtil.getOnlyCurrentTimeString();
int uid = user.getUID();
String uuid = UUID.randomUUID().toString();
Map<String, Object> datas = new HashMap<>(4);
RecordSet rs = new RecordSet();
String templateId = "";
boolean result = rs.executeUpdate("insert into uf_custom_template(templateName,templateFields,isused,belongto,modedatacreatedate,modedatacreatetime," +
" modedatacreater,modeuuid) values(?,?,?,?,?,?,?,?)", customTemplateName, fields, 0, uid, currentDate, currentTime, uid, uuid);
if (result) {
rs.executeQuery("select id from uf_custom_template where modeuuid = ?",uuid);
if (rs.next()) {
templateId = Util.null2String(rs.getString("id"));
}
}
datas.put("templateId",templateId);
datas.put("customTemplates",getCustomTemplate());
return datas;
}
@Override
public void updateCustomTemplateFields(Map<String, Object> params) {
String templateId = Util.null2String(params.get("templateId"));
String fields = Util.null2String(params.get("fields"));
RecordSet rs = new RecordSet();
//1.更新当前用户该方案数据
boolean flag = rs.executeUpdate("update uf_custom_template set templateFields = '" + fields + "',isused = 1 where id = ?", templateId);
//2.更新当前用户其它方案为未启用
if (flag) {
rs.executeUpdate("update uf_custom_template set isused = 0 where belongto = ? and id <> ?",user.getUID(),templateId);
}
}
@Override
public LinkedList<String> getTemplateSelectKeys(String templateId) {
LinkedList<CustomTemplateVo> customTemplateList = getCustomTemplate();
CustomTemplateVo customTemplate = customTemplateList.stream()
.filter(item -> templateId.equals(item.getKey()))
.findFirst()
.get();
return new LinkedList<>(Arrays.asList(customTemplate.getTemplateFields().split(",")));
}
@Override
public Map<String, Object> customTemplateTable() {
Map<String, Object> result = new HashMap<>(4);
List<EditTableColumn> columns = new ArrayList<>();
columns.add(EditTableColumn.builder().viewAttr(3).fieldName("templateName").fieldNameDesc("模板名称").fieldType(FieldType.INPUT).build());
columns.add(EditTableColumn.builder().viewAttr(1).fieldName("modedatacreatedate").fieldNameDesc("创建日期").fieldType(FieldType.INPUT).build());
List<Map<String, Object>> lsCol = new ArrayList<>();
Map<String, Object> col;
int width = 100 / columns.size();
for (EditTableColumn editTableColumn : columns) {
String tmpkey = editTableColumn.getFieldName();
col = new HashMap<>(8);
col.put("title", editTableColumn.getFieldNameDesc());
col.put("key", tmpkey);
col.put("dataIndex", tmpkey);
col.put("com", getFieldDetailInfo(editTableColumn,width));
col.put("width", width + "%");
lsCol.add(col);
}
result.put("columns",lsCol);
LinkedList<CustomTemplateVo> templateVos = getCustomTemplate();
List<Map<String, Object>> collect = templateVos.stream().map(item -> {
Map<String, Object> resultMap = new HashMap<>(8);
resultMap.put("id", item.getKey());
resultMap.put("templateName", item.getShowname());
resultMap.put("modedatacreatedate", item.getModedatacreatedate());
return resultMap;
}).collect(Collectors.toList());
result.put("datas", collect);
return result;
}
@Override
public void saveCustomTemplateTable(Map<String, Object> params) {
LinkedList<CustomTemplateVo> customTemplateList = getCustomTemplate();
LinkedList<String> keyList = customTemplateList.stream()
.map(CustomTemplateVo::getKey)
.collect(Collectors.toCollection(LinkedList::new));
int rowNum = Util.getIntValue((String) params.get("rownum"));
RecordSet rs = new RecordSet();
for (int i = 0; i < rowNum; i++) {
String recordIndex = "_" + i;
String id = Util.null2String(params.get("id" + recordIndex));
String templateName = Util.null2String(params.get("templateName" + recordIndex));
rs.executeUpdate("update uf_custom_template set templateName = ? where id = ?",templateName,id);
keyList.remove(id);
}
if (CollectionUtils.isNotEmpty(keyList)) {
String value = StringUtils.join(keyList,",");
rs.executeUpdate("delete from uf_custom_template where id in ("+value+")");
}
}
private List<FieldItem> getFieldDetailInfo(EditTableColumn column,int width) {
List<FieldItem> ls = new ArrayList<>();
FieldItem fieldItem = new FieldItem();
fieldItem.setType(column.getFieldType());
fieldItem.setKey(column.getFieldName());
fieldItem.setViewAttr(column.getViewAttr());
switch (fieldItem.getType()) {
case INPUT:
Map<String, Object> otherParams = new HashMap<>(2);
otherParams.put("inputType","multilang");
fieldItem.setOtherParams(otherParams);
break;
default:
break;
}
fieldItem.setWidth(width + "%");
ls.add(fieldItem);
return ls;
}
private LinkedList<TemplateFieldsPo> rosterList() {
LinkedList<TemplateFieldsPo> templateFields = new LinkedList<>();
RecordSet rs = new RecordSet();
rs.executeQuery("select id,chinese,dataName from uf_roster_field order by id asc");
while (rs.next()) {
templateFields.add(TemplateFieldsPo.builder()
.id(Util.null2String(rs.getString("id")))
.fieldName(Util.null2String(rs.getString("chinese")))
.fieldDataName(Util.null2String(rs.getString("dataName")))
.build());
}
return templateFields;
}
}
Loading…
Cancel
Save