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 <String,FieldSetEntity> mf=new HashMap<>();
|
DataTableEntity pdt=new DataTableEntity();
|
for(int i=0;i<org.getRows();i++) {
|
FieldSetEntity f=org.getFieldSetEntity(i);
|
f.setTableName("sub");
|
FieldSetEntity pf=mf.get(f.getObject("org_level_code_parent"));
|
mf.put(f.getString("code"), f);
|
if(pf==null) {
|
f.setValue("grade",0);
|
pdt.addFieldSetEntity(f);
|
}else {
|
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);
|
}
|
}
|
for(int i=0;i<staffs.getRows();i++) {
|
FieldSetEntity f=staffs.getFieldSetEntity(i);
|
f.setTableName("sub");
|
String code=f.getString("code");
|
if(code ==null) {
|
continue;
|
}
|
int c=code.lastIndexOf('-');
|
if(c>0) {
|
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;
|
}
|
}
|