package com.engine.attendance.component.persongroup.service.impl; import com.engine.attendance.component.persongroup.service.PersonGroupService; import com.engine.common.util.DbTools; import com.engine.common.util.Utils; import com.engine.core.impl.Service; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; import weaver.systeminfo.SystemEnv; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Slf4j public class PersonGroupServiceImpl extends Service implements PersonGroupService { @Override public Map getHrmCondition(Map params, User user) { //获取字段类型 0:日期类型,1:下拉选择类型,2:手工自由输入类型 String type = Util.null2String(params.get("fieldType")); String condition = ""; if ("0".equals(type)){ condition = " and fieldhtmltype='3' and type=2 "; }else if ("1".equals(type)){ condition = " and fieldhtmltype = '5' "; }else if ("2".equals(type)){ condition = " and fieldhtmltype <> '3' and fieldhtmltype <> '5' "; } Map data = Maps.newHashMap(); String sql = "select * from (select t1.fieldid,t2.fieldname,t1.fieldlable,t1.ismand,t2.fielddbtype,t2.fieldhtmltype,t2.type, t1.dmlurl, t1.fieldorder, t1.isuse, t1.isModify,'1' as allowModify, t1.groupid, 1 as allowhide from cus_formfield t1, cus_formdict t2 where t1.fieldid=t2.id and t1.scope='HrmCustomFieldByInfoType' and (t1.scopeid='1' or t1.scopeid='-1' or t1.scopeid='3' ) " + " UNION all " + " select fieldid, fieldname, fieldlabel ,ismand ,fielddbtype ,fieldhtmltype ,type , dmlurl,fieldorder ,isuse ,isModify ,allowModify, groupid, allowhide from hrm_formfield) hrmallfield where groupid in (select id from hrm_fieldgroup where (grouptype = '1' or grouptype = '-1' or grouptype = '3')) "; sql = sql +condition+" order by hrmallfield.groupid, hrmallfield.fieldorder "; log.info("sql :[{}]",sql); List> dataList = DbTools.getSqlToList(sql); sql = "select fieldid,selectvalue,selectname from hrm_selectitem"; List> selectItemLists = DbTools.getSqlToList(sql); Map>> selectItemMap = selectItemLists.stream().collect(Collectors.groupingBy(e -> e.get("fieldid").toString())); sql = "select fieldid,selectvalue,selectname from cus_selectitem"; List> custSelectItemLists = DbTools.getSqlToList(sql); Map>> custSelectItemMap = custSelectItemLists.stream().collect(Collectors.groupingBy(e -> e.get("fieldid").toString())); log.info("selectItemMap : [{}]",selectItemMap); sql = "select type,linkurl from wf_browser_config group by type"; List> browserTypeLists = DbTools.getSqlToList(sql); Map browserTypeMaps = browserTypeLists.stream().collect(Collectors.toMap(e->e.get("type").toString(),e->e.get("linkurl").toString())); log.info("browserTypeMaps : [{}]",browserTypeMaps); for (Map map :dataList){ Integer fieldlable = Integer.valueOf(map.get("fieldlable").toString()); String fieldname = Util.null2String(map.get("fieldname")); String showName = SystemEnv.getHtmlLabelName(fieldlable, user.getLanguage()); map.put("showName",showName); map.put("linkurl",browserTypeMaps.get(map.get("type").toString())); map.put("selectItems",selectItemMap.get(map.get("fieldid").toString())); if (fieldname.contains("field")){ map.put("selectItems",custSelectItemMap.get(map.get("fieldid").toString())); } } data.put("data",dataList); return data; } @Override public Map saveApplicableOrganization(Map params) { String billId = Util.null2String(params.get("billid")); String tableName = Util.null2String(params.get("tableName")); String modeId = Util.null2String(params.get("modeId")); String data = Util.null2String(params.get("data")); Map resultMap = Maps.newHashMap(); List> dataList = Utils.resolveList_Map(data); //清空原有数据 String sql = "delete from kq_groupmember where modeid=? and dataid =?"; RecordSet rs = new RecordSet(); boolean updateResult = DbTools.update(rs,sql,modeId,billId); List addLists = new ArrayList<>(); log.info("updateResult : {}",updateResult); String insertSql = "insert into kq_groupmember (dxlx,dx,aqjb,modeid,dataid) values (?,?,?,?,?)"; if (updateResult){ dataList.forEach(e->{ ArrayList list = new ArrayList<>(); list.add(e.get("dxlx")); list.add(e.get("dx")); list.add(e.get("aqjb")); list.add(modeId); list.add(billId); addLists.add(list); }); } log.info("insert data : [{}]",addLists); resultMap.put("result",rs.executeBatchSql(insertSql,addLists)); return resultMap; } }