许鹏程
2023-05-25 213cc37cbf0b2515a4de56cc1e01813211bad183
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
/**
 * @Date: 2020年6月28日 下午7:05:00
 * @Author: ZhengMeng
 * @Description: 
 */
 
package com.product.org.admin.service;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import com.product.core.entity.FieldMetaEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.product.common.lang.StringUtils;
import com.product.admin.config.CmnConst;
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.service.support.AbstractBaseService;
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.core.transfer.Transactional;
import com.product.org.admin.service.idel.ICompanyLanguageTimeZoneService;
import com.product.util.BaseUtil;
 
/**
 * Copyright LX-BASE
 * 
 * @Title:
 * @Project: LX-BASE-SERVER
 * @Date: 2020年6月28日 下午7:05:00
 * @Author: 郑盟
 * @Description:CompanyLanguageTimeZoneService
 */
@Component
public class CompanyLanguageTimeZoneService extends AbstractBaseService implements ICompanyLanguageTimeZoneService {
    @Autowired
    public BaseDao baseDao;
 
    /**
     * 单位时区语言新增
     * 
     * @param : fs
     * @return :FieldSetEntity 两个表 新增 参数全部装在fs 详情看showdoc
     */
    @Transactional
    public String addLanguageTimeZone(FieldSetEntity fs) throws BaseException {
        fs.setValue(CmnConst.IS_DEFAULT, 1);
        fs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
        fs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date());
        String add = baseDao.add(fs);
        if (add == null)
            return null;
        String language_arr = fs.getString(CmnConst.LANGUAGE_ARR);
        if (!StringUtils.isEmpty(language_arr)) {
            String[] language_arrs = language_arr.split(",");
            for (int i = 0; i < language_arrs.length; i++) {
                String language = language_arrs[i];
                fs.remove("uuid");
                fs.setValue(CmnConst.LANGUAGE_CODE, language);
                fs.setValue(CmnConst.IS_DEFAULT, 0);
                fs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
                fs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date());
                String adds = baseDao.add(fs);
                if (adds == null)
                    return null;
            }
        }
        String zone_uuid = fs.getString(CmnConst.ZONE_UUID);
        String org_level_uuid = fs.getString(CmnConst.ORG_LEVEL_UUID);
        FieldSetEntity timeZoneFs = new FieldSetEntity();
        FieldMetaEntity f = new FieldMetaEntity();
        f.setTableName(new Object[] { CmnConst.PRODUCT_SYS_COMPANY_TIME_ZONE });
        timeZoneFs.setMeta(f);
        timeZoneFs.setValue(CmnConst.ZONE_UUID, zone_uuid);
        timeZoneFs.setValue(CmnConst.ORG_LEVEL_UUID, org_level_uuid);
        timeZoneFs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
        timeZoneFs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date());
        return baseDao.add(timeZoneFs);
    }
 
    /**
     * 单位时区语言更新
     * 
     * @param : fs 参数org_level_uuid
     * @return :FieldSetEntity 两个表 time_zone_uuid为 时区表主键 uuid为语言表主键
     */
    @Transactional
 
    public boolean updateLanguageTimeZone(FieldSetEntity fs) throws BaseException {
        String org_level_uuid = fs.getString(CmnConst.ORG_LEVEL_UUID);
 
        boolean delete = baseDao.delete(CmnConst.PRODUCT_SYS_COMPANY_LANGUAGE, "org_level_uuid=? ",
                new String[] { org_level_uuid });
        if (!delete)
            return delete;
        fs.setValue(CmnConst.IS_DEFAULT, 1);
        fs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
        fs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date());
        fs.remove("uuid");
        String adds = baseDao.add(fs);
        if (adds == null)
            return false;
        String language_arr = fs.getString(CmnConst.LANGUAGE_ARR);
        if (!StringUtils.isEmpty(language_arr)) {
            String[] language_arrs = language_arr.split(",");
            for (int i = 0; i < language_arrs.length; i++) {
                String language = language_arrs[i];
                fs.remove("uuid");
                fs.setValue(CmnConst.LANGUAGE_CODE, language);
                fs.setValue(CmnConst.IS_DEFAULT, 0);
                fs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
                fs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date());
                baseDao.add(fs);
            }
        }
 
        String zone_uuid = fs.getString(CmnConst.ZONE_UUID);
        FieldSetEntity timeZoneFs = new FieldSetEntity();
        timeZoneFs.setTableName(CmnConst.PRODUCT_SYS_COMPANY_TIME_ZONE);
        String time_zone_uuid = fs.getString(CmnConst.TIME_ZONE_UUID);
 
        timeZoneFs.setValue("uuid", time_zone_uuid);
        timeZoneFs.setValue(CmnConst.ZONE_UUID, zone_uuid);
        timeZoneFs.setValue(CmnConst.ORG_LEVEL_UUID, org_level_uuid);
        timeZoneFs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
        timeZoneFs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date());
        if (BaseUtil.strIsNull(time_zone_uuid)) {
            return baseDao.add(timeZoneFs) != null;
        }
        return baseDao.update(timeZoneFs);
    }
 
    /**
     * 单位时区语言详情
     * 
     * @param : fs 参数org_level_uuid
     * @return :FieldSetEntity
     */
    public FieldSetEntity findLanguageTimeZone(FieldSetEntity fs) throws BaseException {
        String org_level_uuid = fs.getString(CmnConst.ORG_LEVEL_UUID);
        DataTableEntity listTable = baseDao.listTable(CmnConst.PRODUCT_SYS_COMPANY_LANGUAGE, "org_level_uuid=?",
                new String[] { org_level_uuid });
        FieldSetEntity timeZoneFs = new FieldSetEntity();
        FieldMetaEntity f = new FieldMetaEntity();
        f.setTableName(new Object[] { CmnConst.PRODUCT_SYS_COMPANY_LANGUAGE });
        timeZoneFs.setMeta(f);
        List<String> list = new ArrayList<>();
        for (int i = 0; i < listTable.getRows(); i++) {
            FieldSetEntity languageFs = listTable.getFieldSetEntity(i);
            if ("1".equals(languageFs.getString(CmnConst.IS_DEFAULT))) {
                timeZoneFs.setValue(CmnConst.LANGUAGE_CODE, languageFs.getString(CmnConst.LANGUAGE_CODE));
                timeZoneFs.setValue("uuid", languageFs.getString("uuid"));
                FieldSetEntity timeFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_COMPANY_TIME_ZONE,
                        "org_level_uuid=?", new String[] { org_level_uuid }, false);
                if (timeFs != null) {
                    timeZoneFs.setValue(CmnConst.ZONE_UUID, timeFs.getString(CmnConst.ZONE_UUID));
                    timeZoneFs.setValue(CmnConst.TIME_ZONE_UUID, timeFs.getString("uuid"));
                }
            } else {
                list.add(languageFs.getString(CmnConst.LANGUAGE_CODE));
            }
        }
        String join = org.apache.commons.lang3.StringUtils.join(list, ",");
        timeZoneFs.setValue(CmnConst.LANGUAGE_ARR, join);
        return timeZoneFs;
    }
 
    @Transactional
    public boolean delectLanguageTimeZone(FieldSetEntity fs) throws BaseException {
        String org_level_uuid = fs.getString(CmnConst.ORG_LEVEL_UUID);
        boolean delete = baseDao.delete(CmnConst.PRODUCT_SYS_COMPANY_LANGUAGE, " org_level_uuid=?",
                new String[] { org_level_uuid });
        if (!delete)
            return delete;
        return baseDao.delete(CmnConst.PRODUCT_SYS_COMPANY_TIME_ZONE, "  org_level_uuid=?",
                new String[] { org_level_uuid });
    }
}