|
|
@@ -5,12 +5,15 @@ import com.fs.common.annotation.Log;
|
|
|
import com.fs.common.core.controller.BaseController;
|
|
|
import com.fs.common.core.domain.AjaxResult;
|
|
|
import com.fs.common.core.domain.R;
|
|
|
+import com.fs.common.core.domain.entity.SysDictData;
|
|
|
import com.fs.common.core.page.TableDataInfo;
|
|
|
import com.fs.common.enums.BusinessType;
|
|
|
import com.fs.common.utils.ServletUtils;
|
|
|
import com.fs.common.utils.StringUtils;
|
|
|
import com.fs.common.utils.poi.ExcelUtil;
|
|
|
+import com.fs.company.domain.Company;
|
|
|
import com.fs.company.domain.CompanyUser;
|
|
|
+import com.fs.company.service.ICompanyService;
|
|
|
import com.fs.company.service.ICompanyUserService;
|
|
|
import com.fs.company.util.OrderUtils;
|
|
|
import com.fs.crm.domain.CrmCustomer;
|
|
|
@@ -21,6 +24,8 @@ import com.fs.crm.service.ICrmCustomerUserService;
|
|
|
import com.fs.crm.vo.*;
|
|
|
import com.fs.framework.security.LoginUser;
|
|
|
import com.fs.framework.service.TokenService;
|
|
|
+import com.fs.system.service.ISysConfigService;
|
|
|
+import com.fs.system.service.ISysDictTypeService;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
@@ -32,7 +37,9 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* 客户Controller
|
|
|
@@ -54,6 +61,12 @@ public class CrmCustomerController extends BaseController
|
|
|
ICrmCustomerUserService crmCustomerUserService;
|
|
|
@Autowired
|
|
|
private ICrmCustomerPropertyService crmCustomerPropertyService;
|
|
|
+ @Autowired
|
|
|
+ private ICompanyService companyService;
|
|
|
+ @Autowired
|
|
|
+ private ISysConfigService configService;
|
|
|
+ @Autowired
|
|
|
+ private ISysDictTypeService dictTypeService;
|
|
|
|
|
|
@ApiOperation("获取线索客户")
|
|
|
@PreAuthorize("@ss.hasPermi('crm:customer:lineList')")
|
|
|
@@ -466,4 +479,61 @@ public class CrmCustomerController extends BaseController
|
|
|
return R.ok().put("data",list);
|
|
|
}
|
|
|
|
|
|
+ @ApiOperation("动态数据字典查询")
|
|
|
+ @GetMapping("/tradeDicts")
|
|
|
+ public AjaxResult getTradeDicts() {
|
|
|
+ // 1. 获取当前登录用户的公司ID
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ Long companyId = loginUser.getCompany().getCompanyId();
|
|
|
+
|
|
|
+ // 2. 查询公司行业配置 (company_trade)
|
|
|
+ String prefix = "";
|
|
|
+ Company company = companyService.selectCompanyById(companyId);
|
|
|
+ Integer companyTrade = company.getCompanyTrade();
|
|
|
+
|
|
|
+ if (companyTrade != null) {
|
|
|
+ // 查 trade_type 字典获取 remark 前缀
|
|
|
+ prefix = getDictRemarkByValue("trade_type", String.valueOf(companyTrade));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 如果公司没有行业配置,回退查租户配置
|
|
|
+ if (StringUtils.isEmpty(prefix)) {
|
|
|
+ String tenantTrade = configService.selectConfigByKey("his.config.tenantTrade");
|
|
|
+ if (StringUtils.isNotEmpty(tenantTrade)) {
|
|
|
+ prefix = getDictRemarkByValue("trade_type", tenantTrade);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 构建四个字典的查询结果(带保底逻辑)
|
|
|
+ String[] dictTypes = {"crm_customer_source", "crm_customer_user_status",
|
|
|
+ "crm_customer_type", "crm_customer_tag"};
|
|
|
+ Map<String, List<SysDictData>> result = new HashMap<>();
|
|
|
+
|
|
|
+ for (String dictType : dictTypes) {
|
|
|
+ List<SysDictData> data = null;
|
|
|
+ if (StringUtils.isNotEmpty(prefix)) {
|
|
|
+ data = dictTypeService.selectDictDataByType(prefix + dictType);
|
|
|
+ }
|
|
|
+ // 保底逻辑:前缀查不到数据则使用原始字典
|
|
|
+ if (data == null || data.isEmpty()) {
|
|
|
+ data = dictTypeService.selectDictDataByType(dictType);
|
|
|
+ }
|
|
|
+ result.put(dictType, data);
|
|
|
+ }
|
|
|
+
|
|
|
+ return AjaxResult.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getDictRemarkByValue(String dictType, String dictValue) {
|
|
|
+ List<SysDictData> dictDataList = dictTypeService.selectDictDataByType(dictType);
|
|
|
+ if (dictDataList != null) {
|
|
|
+ for (SysDictData data : dictDataList) {
|
|
|
+ if (dictValue.equals(data.getDictValue())) {
|
|
|
+ return StringUtils.isNotEmpty(data.getRemark()) ? data.getRemark() : "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
}
|