shichongfu
2023-05-31 6f9405da1b729783c9c0811b5b475d03793c1da2
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
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();
        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 org_level_code");
        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(all) {b.append(" and  a.tricode like '").append(code).append("%'");}//只加载公司人员
//        b.append(" order by a.org_level_code");
        DataTableEntity staff=baseDao.listTable(b.toString(), new String[] {});
        
        return parseData(org,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;
    }
}