2369059705@qq.com
2023-07-17 87e8b958288e719fd15ad4295b50a475a2fbec3f
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
package com.product.base.service;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import com.product.admin.service.CodeService;
import com.product.admin.service.PublicService;
import com.product.base.config.CmnConst;
import com.product.base.util.UnUnitCodeUtil;
import com.product.core.dao.BaseDao;
import com.product.core.entity.DataTableEntity;
import com.product.core.entity.FieldSetEntity;
import com.product.core.service.support.AbstractBaseService;
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.module.sys.entity.SystemUser;
import com.product.util.BaseUtil;
 
 
@Component
public class BaseItemizeService extends AbstractBaseService{
 
    @Autowired
    BaseDao baseDao;
    
    @Autowired
    CodeService codeService;
    
    @Autowired
    PublicService publicService;
    
    /**
     *     分页获取项目分类
     * @param fse
     * @return
     */
    public DataTableEntity listProjectType(FieldSetEntity fse) {
        return baseDao.listTable(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_TYPE, null, null, null, null, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE));
    }
    
    /**
     *     获取项目分类
     * @param uuid
     * @return
     */
    public FieldSetEntity getProjectType(String uuid) {
        return baseDao.getFieldSet(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_TYPE, uuid, false);
    }
    
    /**
     *     保存项目分类
     * @param fse
     * @return
     */
    public boolean saveProjectType(FieldSetEntity fse) {
        fse.setTableName(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_TYPE);
        SystemUser user = SpringMVCContextHolder.getCurrentUser();
        if(BaseUtil.strIsNull(fse.getUUID())) {
            BaseUtil.createCreatorAndCreationTime(user, fse);
        }else {
            BaseUtil.updatedRegeneratorAndUpdateTime(user, fse);
        }
        return baseDao.saveFieldSetEntity(fse);
    }
    
    /**
     *     获取项目分项树
     * @param uuid
     * @return
     */
    public DataTableEntity listProjectItemTree(String uuid) {
        DataTableEntity dtProjectItem = baseDao.listTable("SELECT uuid,itemize,itemize_code,itemize_parent_code,itemize_type FROM product_project_base_project_item WHERE itemize_type=?", new Object[] {uuid});
        if (!BaseUtil.dataTableIsEmpty(dtProjectItem)) {
            baseDao.loadPromptData(dtProjectItem);
            return BaseUtil.dataTableToTreeTable(dtProjectItem, CmnConst.ITEMIZE_CODE, CmnConst.ITEMIZW_PARENT_CODE, null);
        }
        return null;
    }
    
    /**
     *     获取单个项目分项信息
     * @param uuid
     * @return
     */
    public FieldSetEntity getProjectItem(String uuid) {
        return baseDao.getFieldSet(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, uuid, false);
    }
    
    /**
     *     保存项目分项信息
     * @param fse
     * @return
     */
    public boolean saveProjectItem(FieldSetEntity fse) {
        SystemUser user = SpringMVCContextHolder.getCurrentUser();
        if(BaseUtil.strIsNull(fse.getUUID())) {
            //生成创建人和创建时间
            BaseUtil.createCreatorAndCreationTime(user, fse);
            //获取父级编码
            String parentCode = fse.getString(CmnConst.ITEMIZW_PARENT_CODE);
            
            //获取同类型同上级分项最大编码
            FieldSetEntity fseMaxCodeData;
            String currentCode;
            if (BaseUtil.strIsNull(parentCode)) {
                fseMaxCodeData = baseDao.getFieldSetBySQL("SELECT MAX(itemize_code)itemize_code FROM product_project_base_project_item WHERE itemize_type = ? AND itemize_parent_code IS null", new Object[] {fse.getString(CmnConst.ITEMIZE_TYPE)}, false);
                if (fseMaxCodeData != null && !BaseUtil.strIsNull(fseMaxCodeData.getString(CmnConst.ITEMIZE_CODE))) {
                    currentCode = UnUnitCodeUtil.autoCreateCode(fseMaxCodeData.getString(CmnConst.ITEMIZE_CODE));
                }else {
                    currentCode = "001";
                }
            }else {
                fseMaxCodeData = baseDao.getFieldSetBySQL("SELECT MAX(itemize_code)itemize_code FROM product_project_base_project_item WHERE itemize_type = ? AND itemize_parent_code = ?", new Object[] {fse.getString(CmnConst.ITEMIZE_TYPE), parentCode}, false);
                if (fseMaxCodeData != null && !BaseUtil.strIsNull(fseMaxCodeData.getString(CmnConst.ITEMIZE_CODE))) {
                    currentCode = UnUnitCodeUtil.autoCreateCode(fseMaxCodeData.getString(CmnConst.ITEMIZE_CODE));
                }else {
                    currentCode = parentCode+"-001";
                }
            }
            fse.setValue(CmnConst.ITEMIZE_CODE, currentCode);
            
        }else {
            BaseUtil.updatedRegeneratorAndUpdateTime(user, fse);
        }
        return baseDao.saveFieldSetEntity(fse);
    }
    
    
    /**
     *     删除项目分项信息(验证是否包含子项)
     * @param uuid
     * @return
     */
    public boolean deleteProjectItem(String uuid) {
        FieldSetEntity fse = baseDao.getFieldSet(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, uuid, false);
        if (fse != null) {
            String itemCode = fse.getString(CmnConst.ITEMIZE_CODE);
            return baseDao.delete(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, "itemize_code like ?", new Object[] {itemCode+"%"});
        }
        return true;
    }
}