package com.engine.qz.service.impl; import com.engine.core.impl.Service; import com.engine.qz.entity.CustomTemplateVo; import com.engine.qz.entity.CustomTranscerDataVo; import com.engine.qz.entity.TemplateFieldsPo; import com.engine.qz.service.HrmCustomTemplateService; import weaver.general.TimeUtil; import weaver.general.Util; import weaver.conn.RecordSet; import java.util.*; /** * @Author Apple * @Date 2025/2/24 11:08 * @Description: * @Version 1.0 */ public class HrmCustomTemplateServiceImpl extends Service implements HrmCustomTemplateService { @Override public CustomTranscerDataVo getCustomTransferData(Map params) { //1.所有可查看字段 (todo 权限控制获取) LinkedList transferDatas = rosterList(); //2.存在模板 且已经选择的字段 LinkedList customTemplate = getCustomTemplate(); Optional result = customTemplate.stream() .filter(vo -> vo.getIsused() == 1) .findFirst(); LinkedList 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 getCustomTemplate() { RecordSet rs = new RecordSet(); LinkedList customTemplateVos = new LinkedList<>(); rs.executeQuery("select id,templateName,templateFields,isused,belongto 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"))) .build()); } //todo 没有模板或者模版都没启用 return customTemplateVos; } @Override public Map addCustomTemplate(Map 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 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 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 getTemplateSelectKeys(String templateId) { LinkedList customTemplateList = getCustomTemplate(); CustomTemplateVo customTemplate = customTemplateList.stream() .filter(item -> templateId.equals(item.getKey())) .findFirst() .get(); return new LinkedList<>(Arrays.asList(customTemplate.getTemplateFields().split(","))); } private LinkedList rosterList() { LinkedList 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; } }