| | |
| | | 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; |
| | |
| | | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | public class CustomerController extends JeecgController<Customer, ICustomerService> { |
| | | @Autowired |
| | | private ICustomerService customerService; |
| | | |
| | | |
| | | @Autowired |
| | | private ISysUserService sysUserService; |
| | | /** |
| | | * 分页列表查询 |
| | | * |
| | |
| | | @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; |
| | |
| | | @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()); |
| | |
| | | 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 { |
| | |
| | | } |
| | | 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()); |
| | |
| | | contractFileService.save(contractFile); |
| | | } |
| | | |
| | | contractController.addContract(customer.getContract(),customer.getSemanticWordList()); |
| | | return Result.OK("添加成功!"); |
| | | } |
| | | } |