package com.product.mobile.core.service; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.product.common.lang.StringUtils; import com.product.core.config.Global; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.exception.BaseException; import com.product.core.log.SystemLogger; import com.product.core.service.support.AbstractBaseService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.mobile.core.config.MobileCoreConst; import com.product.module.sys.entity.SystemUser; import com.product.util.BaseUtil; /** * 手机端,获取用户所有应用 * @author Administrator * */ @Component public class ContanctOrgListService extends AbstractBaseService{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //制定输出格式 @Autowired public BaseDao baseDao; /** * 先查出历史打卡记录 * @param cpage * @param pagesize * @return * @throws BaseException */ public DataTableEntity orgList(FieldSetEntity fse) throws BaseException{ SystemUser user=SpringMVCContextHolder.getCurrentUser(); boolean all=Global.getPropertyToBoolean("mobile.contanct.org.all", "false").booleanValue(); boolean delay=Global.getPropertyToBoolean("mobile.contanct.org.delay", "false").booleanValue(); String code=user.getCurrentCompany().getString("org_level_code"); //公司部门 StringBuilder b=new StringBuilder(); b.append("select uuid,org_level_name name, org_level_type,org_level_code code,org_level_code_parent,org_level_type type from product_sys_org_levels where org_level_status=0 "); if(!all) {b.append(" and org_level_code like '").append(code).append("%'");}//只加载公司 b.append(" order by LENGTH(org_level_code) ,org_level_type"); DataTableEntity org=baseDao.listTable(b.toString(), new String[] {}); //员工 b=new StringBuilder(); b.append("select a.uuid,a.tricode code, a.show_name name,a.contact_address,a.sex,b.thumbnail_img,a.job_post_uuid,c.job_post_name post,a.staff_email mail,a.office_telephone tel,a.mobile_phone mobile,2 type,d.org_level_name com from product_sys_staffs a left join product_sys_users b on a.user_id=b.user_id left join product_sys_job_posts c on a.job_post_uuid=c.uuid left join product_sys_org_levels d on a.org_level_uuid=d.uuid where b.status=1 "); if(delay) {//延迟回载,只加载当前人所在部门的人员 b.append(" and a.tricode like '").append(user.getCurrentDept().getString("org_level_code")).append("%'"); }else if(!all) { b.append(" and a.tricode like '").append(code).append("%'"); }//只加载公司人员 b.append(" order by CONVERT(a.show_name USING gbk) COLLATE gbk_chinese_ci ASC"); DataTableEntity staff=baseDao.listTable(b.toString(), new String[] {}); return parseData(org,staff); } /** * 先查出历史打卡记录 * @param cpage * @param pagesize * @return * @throws BaseException */ public DataTableEntity orgList(String orgCode) throws BaseException{ SystemUser user=SpringMVCContextHolder.getCurrentUser(); if(StringUtils.isEmpty(orgCode) || orgCode.equals(user.getCurrentDept().getString("tricode") ) ) {//当前人部门,也不用传 return new DataTableEntity(); } //员工 StringBuilder b=new StringBuilder(); b.append("select a.uuid,a.tricode code, a.show_name name,a.contact_address,a.sex,b.thumbnail_img,a.job_post_uuid,c.job_post_name post,a.staff_email mail,a.office_telephone tel,a.mobile_phone mobile,2 type,d.org_level_name com from product_sys_staffs a left join product_sys_users b on a.user_id=b.user_id left join product_sys_job_posts c on a.job_post_uuid=c.uuid left join product_sys_org_levels d on a.org_level_uuid=d.uuid where b.status=1 "); b.append(" and a.tricode = '").append(orgCode).append("'"); DataTableEntity staff=baseDao.listTable(b.toString(), new String[] {}); return staff; } /** * 对数据进行封装 * @param dt * @return */ private DataTableEntity parseData(DataTableEntity org,DataTableEntity staffs) { Map mf=new HashMap<>(); DataTableEntity pdt=new DataTableEntity(); for(int i=0;i0) { FieldSetEntity pf=mf.get(code.substring(0,c)); if(pf==null) { SpringMVCContextHolder.getSystemLogger().error("员工编码错误:"+f.getString("show_name")+"找不到所属部门"); }else { f.setValue("dept",pf.getString("name")); f.setValue("grade",pf.getInteger("grade").intValue()+1); DataTableEntity sub=pf.getSubDataTable("sub"); if(DataTableEntity.isEmpty(sub)) { sub=new DataTableEntity(); sub.setMeta(f.getMeta()); pf.addSubDataTable(sub); } sub.addFieldSetEntity(f); } } } return pdt; } }