许鹏程
6 天以前 eb8d72c413fd12ccfa30e0d38fd9fce2ff054f4f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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;
    }
}