Commit 3e87a073 authored by lcl's avatar lcl

add

parent bb14a785
package com.dsk.web.controller.customer;
import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.PageUtils;
import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.service.ICustomerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -19,4 +28,34 @@ public class CustomerController extends BaseController {
@Autowired
private ICustomerService baseService;
/**
* 查询客户列表
*/
@PreAuthorize("@ss.hasPermi('customer:list')")
@GetMapping("/list")
public TableDataInfo selectPageList(CustomerSearchDto dto){
startPage();
return getDataTable(baseService.selectList(dto));
}
/**
* 添加客户
*/
@PreAuthorize("@ss.hasPermi('customer:add')")
@PostMapping()
@RepeatSubmit
public AjaxResult add(Customer customer){
return AjaxResult.success(baseService.add(customer));
}
/**
* 编辑客户
*/
@PreAuthorize("@ss.hasPermi('customer:edit')")
@PostMapping()
@RepeatSubmit
public AjaxResult edit(Customer customer){
return AjaxResult.success(baseService.edit(customer));
}
}
package com.dsk.web.controller.customer;
import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.CustomerDecisionChain;
import com.dsk.system.domain.dto.CustomerDecisionChainSearchDto;
import com.dsk.system.domain.customer.CustomerDecisionChain;
import com.dsk.system.domain.customer.dto.CustomerDecisionChainSearchDto;
import com.dsk.system.service.ICustomerDecisionChainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
......@@ -37,7 +38,8 @@ public class CustomerDecisionChainController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('customer:decision:chain:add')")
@PostMapping()
public AjaxResult add(CustomerDecisionChain customerDecisionChain){
@RepeatSubmit()
public AjaxResult add(@RequestBody CustomerDecisionChain customerDecisionChain){
return AjaxResult.success(baseService.insert(customerDecisionChain));
}
......@@ -46,7 +48,8 @@ public class CustomerDecisionChainController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('customer:decision:chain:edit')")
@PutMapping()
public AjaxResult edit(CustomerDecisionChain customerDecisionChain){
@RepeatSubmit()
public AjaxResult edit(@RequestBody CustomerDecisionChain customerDecisionChain){
return AjaxResult.success(baseService.update(customerDecisionChain));
}
......@@ -55,6 +58,7 @@ public class CustomerDecisionChainController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('customer:decision:chain:del')")
@DeleteMapping("/{id}")
@RepeatSubmit()
public AjaxResult del(@PathVariable("id") Long id){
return AjaxResult.success(baseService.deleteById(id));
}
......
package com.dsk.system.domain;
package com.dsk.system.domain.customer;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
......@@ -101,17 +99,15 @@ public class Customer implements Serializable {
* 其它管理体系特点
*/
private String otherMsCharacteistic;
/**
* 最后跟进时间
*/
private Date lastFollowTime;
private Long createId;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
private Long updateId;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
......
package com.dsk.system.domain;
package com.dsk.system.domain.customer;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
......@@ -54,6 +52,7 @@ public class CustomerDecisionChain implements Serializable {
*/
private String remark;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新人
......@@ -62,6 +61,7 @@ public class CustomerDecisionChain implements Serializable {
private Long updateId;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
......
package com.dsk.system.domain.customer;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 客户负责人表
*
* @author lcl
* @create 2023/5/17
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("customer_user")
public class CustomerUser implements Serializable {
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 负责人id
*/
private Long userId;
/**
* 状态
*/
private Integer status;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private Date careteTime;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
public CustomerUser(String customerId, Long userId) {
this.customerId = customerId;
this.userId = userId;
}
}
package com.dsk.system.domain.customer.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author lcl
* @create 2023/5/16
*/
@Data
public class CustomerSearchDto implements Serializable {
/**
* 企业名称
*/
private String companyName;
/**
* 用户id
*/
private Long userId;
}
package com.dsk.system.domain.customer.vo;
import lombok.Data;
/**
* @author lcl
* @create 2023/5/17
*/
@Data
public class CustomerListVo {
private String customerId;
/**
* jsk企业id
*/
private Integer companyId;
/**
* 客户名称(企业名称)
*/
private String companyName;
/**
* 合作项目
*/
private Integer cooperationProject;
/**
* 跟进项目
*/
private Integer followProject;
/**
* 储备项目
*/
private Integer reserveProject;
/**
* 法定代表人
*/
private String legalPerson;
/**
* 注册资本(字符串)
*/
private String registerCapitalStr;
/**
* 企业性质
*/
private String companyNature;
/**
* 企业级别
*/
private String companyLevel;
/**
* 信用等级
*/
private String creditLevel;
/**
* 上级公司
*/
private String superCompany;
/**
* 是否上市 0:否 1:是
*/
private Integer isOn;
/**
* 是否主要客户 0:否 1:是
*/
private Integer isMajor;
/**
* 发包属性
*/
private String companyAttribute;
/**
* 主要业务
*/
private String mainBusiness;
/**
* 经营范围
*/
private String businessScope;
/**
* 商务条件特点
*/
private String businessCharacteristic;
/**
* 决策链条
*/
private String decisionChain;
/**
* 招投标流程特点
*/
private String bidCharacteristic;
/**
* 履约阶段特点
*/
private String performanceCharacteristic;
/**
* 其它管理体系特点
*/
private String otherMsCharacteistic;
/**
* 跟进人
*/
private String followUser;
}
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.CustomerDecisionChain;
import com.dsk.system.domain.customer.CustomerDecisionChain;
import org.apache.ibatis.annotations.Mapper;
......
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.Customer;
import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.domain.customer.vo.CustomerListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
......@@ -14,5 +19,7 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface CustomerMapper extends BaseMapper<Customer> {
List<CustomerListVo> selectList(@Param("dto") CustomerSearchDto dto);
}
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.customer.CustomerUser;
import org.apache.ibatis.annotations.Mapper;
/**
* 客户负责人表(Customer)表数据库访问层
*
* @author makejava
* @since 2023-05-16 09:28:00
*/
@Mapper
public interface CustomerUserMapper extends BaseMapper<CustomerUser> {
}
package com.dsk.system.service;
import com.dsk.system.domain.CustomerDecisionChain;
import com.dsk.system.domain.dto.CustomerDecisionChainSearchDto;
import com.dsk.system.domain.customer.CustomerDecisionChain;
import com.dsk.system.domain.customer.dto.CustomerDecisionChainSearchDto;
import java.util.List;
......
package com.dsk.system.service;
import com.dsk.system.domain.Customer;
import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.domain.customer.vo.CustomerListVo;
import java.util.List;
......@@ -13,4 +14,10 @@ import java.util.List;
*/
public interface ICustomerService {
List<CustomerListVo> selectList(CustomerSearchDto dto);
boolean add(Customer customer);
boolean edit(Customer customer);
}
......@@ -3,8 +3,8 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.CustomerDecisionChain;
import com.dsk.system.domain.dto.CustomerDecisionChainSearchDto;
import com.dsk.system.domain.customer.CustomerDecisionChain;
import com.dsk.system.domain.customer.dto.CustomerDecisionChainSearchDto;
import com.dsk.system.mapper.CustomerDecisionChainMapper;
import com.dsk.system.service.ICustomerDecisionChainService;
import lombok.extern.slf4j.Slf4j;
......
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.CustomerUser;
import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.domain.customer.vo.CustomerListVo;
import com.dsk.system.mapper.CustomerMapper;
import com.dsk.system.mapper.CustomerUserMapper;
import com.dsk.system.service.ICustomerService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
/**
* 客户信息表(Customer)表服务实现类
......@@ -16,6 +27,51 @@ import javax.annotation.Resource;
public class CustomerServiceImpl implements ICustomerService {
@Resource
private CustomerMapper customerMapper;
private CustomerMapper baseMapper;
@Resource
private CustomerUserMapper customerUserMapper;
@Override
public List<CustomerListVo> selectList(CustomerSearchDto dto) {
dto.setUserId(SecurityUtils.getUserId());
List<CustomerListVo> vos = baseMapper.selectList(dto);
for (CustomerListVo vo : vos) {
//TODO 客户项目相关统计
//合作项目
vo.setCooperationProject(1);
//跟进项目
vo.setFollowProject(1);
//储备项目
vo.setReserveProject(1);
}
return vos;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
final Long userId = SecurityUtils.getUserId();
customer.setCreateId(userId);
customer.setUpdateId(userId);
//TODO 查询企业id
customer.setCompanyId(0);
int i = baseMapper.insert(customer);
if (i == 0) throw new ServiceException("客户信息添加错误!");
int ui = customerUserMapper.insert(new CustomerUser(customer.getCustomerId(), userId));
if (ui == 0) throw new ServiceException("客户跟进人信息添加错误!");
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean edit(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyId())) throw new BeanException("客户id不能为空");
customer.setUpdateId(SecurityUtils.getUserId());
int u = baseMapper.updateById(customer);
return u != 0;
}
}
......@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.system.mapper.CustomerDecisionChainMapper">
<resultMap type="com.dsk.system.domain.CustomerDecisionChain" id="CustomerDecisionChainMap">
<resultMap type="com.dsk.system.domain.customer.CustomerDecisionChain" id="CustomerDecisionChainMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="customerId" column="customer_id" jdbcType="VARCHAR"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
......
......@@ -2,6 +2,19 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.system.mapper.CustomerMapper">
<select id="selectList" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
select
ct.customer_id, ct.company_id, ct.company_name, ct.legal_person, ct.register_capital_str,
ct.register_capital, ct.company_nature, ct.company_level, ct.credit_level, ct.super_company,
ct.is_on, ct.is_major, ct.company_attribute, ct.main_business, ct.business_scope,
ct.business_characteristic, ct.decision_chain, ct.bid_characteristic, ct.performance_characteristic,
ct.other_ms_characteistic, u.nick_name followUser
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
join sys_user u on ctu.user_id = u.user_id
where ctu.user_id = #{dto.userId}
<if test="dto.companyName != null and dto.companyName != '' "> and ct.company_name like concat('%',#{dto.companyName},'%')</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.system.mapper.CustomerUserMapper">
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment