chengf
2026-01-29 67460d9dd51a5185dc0f7cb872dce43789d54643
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/customer/controller/CustomerController.java
@@ -1,21 +1,21 @@
package org.jeecg.modules.demo.customer.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.demo.contract.controller.ContractController;
import org.jeecg.modules.demo.contract.entity.Contract;
import org.jeecg.modules.demo.contract.entity.ContractFile;
import org.jeecg.modules.demo.contract.entity.SemanticWord;
@@ -33,6 +33,7 @@
import org.jeecg.modules.system.controller.SysUserController;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -41,6 +42,8 @@
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -63,7 +66,9 @@
public class CustomerController extends JeecgController<Customer, ICustomerService> {
   @Autowired
   private ICustomerService customerService;
     @Autowired
     private ISysUserService sysUserService;
   /**
    * 分页列表查询
    *
@@ -80,13 +85,100 @@
                           @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                           @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                           HttpServletRequest req) {
        if (customer.getAgentsNameToCustomer() != null) {
            // 1. 构建Lambda查询条件,指定查询enterpriseName字段并去重
            LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<Customer>()
                    .select(Customer::getEnterpriseName); // 关联实体的getter方法
            // 可选:添加原有条件(如agentsName不为空)
            queryWrapper.eq(Customer::getAgentsName,customer.getAgentsNameToCustomer());
            queryWrapper.or();
            queryWrapper.eq(Customer::getCreateBy,customer.getAgentsNameToCustomer());
            queryWrapper.or();
            queryWrapper.exists("SELECT 1 FROM contract WHERE contract.agents_name = {0} AND contract.customer_name = customer.enterprise_name",
                    customer.getAgentsNameToCustomer());
            // 2. 查询字段值,返回Object列表
            List<Object> objList = customerService.listObjs(queryWrapper);
            // 3. 转换为String类型,并过滤null值
            if (CollectionUtils.isEmpty(objList)) {
                return Result.ok(List.of().toString());
            }
            return Result.ok(objList.stream()
                    .filter(Objects::nonNull) // 过滤null值
                    .map(Object::toString) // 转换为String
                    .collect(Collectors.toList()).toString());
        }
        QueryWrapper<Customer> queryWrapper = QueryGenerator.initQueryWrapper(customer, req.getParameterMap());
      Page<Customer> page = new Page<Customer>(pageNo, pageSize);
      IPage<Customer> pageList = customerService.page(page, queryWrapper);
      return Result.OK(pageList);
   }
     @Operation(summary="客户表-查询总客户数")
     @GetMapping(value = "/count")
     public Result<IPage<Customer>> count(Customer customer,
                                          @RequestParam(name="role", defaultValue="无") String role,
                                          @RequestParam(name="user", defaultValue="无") String user,
                                                  HttpServletRequest req) {
         if (customer.getAgentsNameToCustomer() != null) {
             // 1. 构建Lambda查询条件,指定查询enterpriseName字段并去重
             LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<Customer>()
                     .select(Customer::getEnterpriseName); // 关联实体的getter方法
             // 可选:添加原有条件(如agentsName不为空)
             queryWrapper.eq(Customer::getAgentsName,customer.getAgentsNameToCustomer());
             queryWrapper.or();
             queryWrapper.eq(Customer::getCreateBy,customer.getAgentsNameToCustomer());
             queryWrapper.or();
             queryWrapper.exists("SELECT 1 FROM contract WHERE contract.agents_name = {0} AND contract.customer_name = customer.enterprise_name",
                     customer.getAgentsNameToCustomer());
             // 2. 查询字段值,返回Object列表
             List<Object> objList = customerService.listObjs(queryWrapper);
             // 3. 转换为String类型,并过滤null值
             if (CollectionUtils.isEmpty(objList)) {
                 return Result.ok(List.of().toString());
             }
             return Result.ok(objList.stream()
                     .filter(Objects::nonNull) // 过滤null值
                     .map(Object::toString) // 转换为String
                     .collect(Collectors.toList()).toString());
         }
         QueryWrapper<Customer> queryWrapper = QueryGenerator.initQueryWrapper(customer, req.getParameterMap());
         if (!user.equals("无")){
             QueryWrapper qw = new QueryWrapper<SysUser>();
             qw.eq("id", user);
             String userName = ((SysUser)((Page) sysUserService.queryPageList(req, qw, 1, 1).getResult()).getRecords().get(0)).getUsername();
             queryWrapper.eq("create_by", userName);
         }
         long count = customerService.count(queryWrapper);
         return Result.OK(count+"");
     }
     @Operation(summary="客户表-分页列表查询")
     @GetMapping(value = "/listAgents")
     public Result<IPage<Customer>> queryPageListDls() {
// 构建查询条件,只查询 agents_name 字段
         QueryWrapper<Contract> queryWrapper = new QueryWrapper<>();
         queryWrapper.select("agents_name"); // 指定查询字段(数据库字段名)
         // 执行查询,获取所有 agents_name(可能包含重复值)
         List<Contract> contractList = contractService.list(queryWrapper);
         // 提取 agentsName 并去重(转为字符串列表)
         List<String> agentsNames = contractList.stream()
                 .filter(contract -> contract != null) // 过滤null的Contract对象
                 .map(Contract::getAgentsName)
                 .filter(agentsName -> agentsName != null && !agentsName.isEmpty()) // 过滤null或空字符串
                 .distinct()
                 .collect(Collectors.toList()); // 第105行(示例)
         return Result.OK(JSONObject.toJSONString(agentsNames));
     }
    @Autowired
    private SysUserController sysUserController;
@@ -212,33 +304,45 @@
     @Autowired
     private ISemanticWordService semanticWordService;
     @Autowired
     private ContractController  contractController;
     @RequiresPermissions("customer:customer:importCustomerContractWord")
     @RequestMapping(value = "/importCustomerContractWord", method = RequestMethod.POST)
     public Result<String> importCustomerContractWord(@RequestBody Customer customer) {
         if (customer.getContract().getReviewStatus() == null) {
             customer.getContract().setReviewStatus("待审核");
             customer.getContract().setReviewStatus("1");
         }
         QueryWrapper<Customer> queryWrapper = new  QueryWrapper<>();
         queryWrapper.eq("enterprise_name",customer.getEnterpriseName());
         if (customer.getId() == null || customer.getId().equals("")) {
             if (customerService.count(queryWrapper) > 0) {
         QueryWrapper<SysUser> querySysUser = new  QueryWrapper<>();
         querySysUser.eq("username",customer.getEnterpriseName());
             }else{
         if (customer.getId() == null || customer.getId().equals("")) {
             if (customerService.count(queryWrapper) == 0) {
                 customerService.save(customer);
             }
             if (sysUserController.getSysUserService().count(querySysUser) == 0) {
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.put("workNo", "KH" + customer.getEnterpriseName());
                 String filteredName = customer.getEnterpriseName().replaceAll("[\u4e00-\u9fa5]", "").replaceAll("\\s+", "");
                 jsonObject.put("workNo", "KH" + filteredName + customer.getCustomerPhone());
                 jsonObject.put("password", "123456");
                 jsonObject.put("confirmPassword", "123456");
                 jsonObject.put("selectedroles", "1972228625018228737");
                 jsonObject.put("activitiSync", "1");
                 jsonObject.put("departIds", "");
                 jsonObject.put("userIdentity", "1");
                 String phone = customer.getCustomerPhone();
                 String phone = customer.getCustomerPhone(); ;
// 校验电话号码:非空且为数字,且长度≤20
                 if (phone != null && phone.matches("\\d{1,20}")) {
                 if ((phone != null && phone != "") && phone.matches("\\d{1,20}")) {
                     // 校验通过,放入JSONObject
                     jsonObject.put("phone", phone);
                 } else {
                 } else if (phone == null || phone == "") {
                 }
                 else {
                     return Result.error("请输入正确的电话号码");
                 }
                 jsonObject.put("email" , customer.getCustomerEmail());
@@ -250,9 +354,11 @@
                         return Result.error("电话号码或邮箱重复");
                     }
                 }catch (Exception e) {
                     if (e.getMessage().equals("Subject does not have permission [system:user:add]")){
                         return Result.error("未分配权限:创建客户用户");
                     }
                     return Result.error("电话号码或邮箱重复");
                 }
                 customerService.save(customer);
             }
         }
        try {
@@ -262,11 +368,17 @@
        }
         Customer one = customerService.getOne(queryWrapper);
         customer.getContract().setCustomerName(one.getEnterpriseName());
         contractService.save(customer.getContract());
         QueryWrapper<Contract> queryWrapper1 = new  QueryWrapper<>();
         queryWrapper1.eq("customer_name",customer.getContract().getCustomerName());
         queryWrapper1.eq("contract_name",customer.getContract().getContractName());
         if(contractService.count(queryWrapper1) != 0) {
             return Result.error("该合同已存在");
         }
         contractService.save(customer.getContract());
         Contract one1 = contractService.getOne(queryWrapper1);
         for (SemanticWord semanticWord : customer.getSemanticWordList()){
             semanticWord.setContractId(one1.getId());
@@ -278,6 +390,7 @@
             contractFileService.save(contractFile);
         }
         contractController.addContract(customer.getContract(),customer.getSemanticWordList());
         return Result.OK("添加成功!");
     }
}