package com.zy.crm.manager.controller;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.core.annotations.ManagerAuth;
|
import com.core.common.BaseRes;
|
import com.core.common.Cools;
|
import com.core.common.R;
|
import com.core.domain.KeyValueVo;
|
import com.core.exception.CoolException;
|
import com.zy.crm.common.web.BaseController;
|
import com.zy.crm.manager.controller.result.FollowerTableVo;
|
import com.zy.crm.manager.entity.Cstmr;
|
import com.zy.crm.manager.entity.CstmrFoll;
|
import com.zy.crm.manager.entity.CstmrType;
|
import com.zy.crm.manager.service.CstmrFollService;
|
import com.zy.crm.manager.service.CstmrService;
|
import com.zy.crm.manager.service.CstmrTypeService;
|
import com.zy.crm.system.entity.Dic;
|
import com.zy.crm.system.entity.Role;
|
import com.zy.crm.system.entity.User;
|
import com.zy.crm.system.service.DicService;
|
import com.zy.crm.system.service.UserService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.ss.usermodel.DataFormatter;
|
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.util.*;
|
|
@Slf4j
|
@RestController
|
public class CstmrController extends BaseController {
|
|
@Autowired
|
private CstmrService cstmrService;
|
@Autowired
|
private CstmrTypeService cstmrTypeService;
|
@Autowired
|
private DicService dicService;
|
|
@RequestMapping(value = "/cstmr/{id}/auth")
|
@ManagerAuth
|
public R get(@PathVariable("id") String id) {
|
return R.ok(cstmrService.selectById(String.valueOf(id)));
|
}
|
|
@RequestMapping(value = "/cstmr/page/auth")
|
@ManagerAuth
|
public R page(@RequestParam(defaultValue = "1") Integer curr,
|
@RequestParam(defaultValue = "10") Integer limit,
|
@RequestParam(required = false) String condition,
|
@RequestParam(required = false, value = "dept_id") Long deptId,
|
@RequestParam(required = false, value = "user_id") Long userId){
|
return R.ok(cstmrService.getPage(new Page<>(curr, limit)
|
, getHostId()
|
, deptId == null ? null : String.valueOf(deptId)
|
, userId == null ? getUserId() : userId
|
, condition)
|
);
|
}
|
|
@RequestMapping(value = "/cstmr/add/auth")
|
@ManagerAuth
|
public R add(Cstmr cstmr) {
|
Long hostId = getHostId();
|
if (cstmrService.selectByUuid(hostId, cstmr.getUuid()) != null) {
|
throw new CoolException("客户已存在");
|
}
|
cstmr.setHostId(hostId);
|
cstmr.setUuid(cstmrService.getUuid(hostId)); // 客户代号
|
cstmr.setDeptId(getDeptId()); // 所属部门
|
cstmr.setUserId(getUserId()); // 所属人员
|
|
cstmr.setCreateBy(getUserId());
|
cstmr.setCreateTime(new Date());
|
cstmr.setUpdateBy(getUserId());
|
cstmr.setUpdateTime(new Date());
|
cstmr.setStatus(1);
|
cstmrService.insert(cstmr);
|
return R.ok();
|
}
|
|
@RequestMapping(value = "/cstmr/update/auth")
|
@ManagerAuth
|
public R update(Cstmr cstmr){
|
if (Cools.isEmpty(cstmr) || null==cstmr.getId()){
|
return R.error();
|
}
|
cstmr.setUpdateBy(getUserId());
|
cstmr.setUpdateTime(new Date());
|
cstmrService.updateById(cstmr);
|
return R.ok();
|
}
|
|
@RequestMapping(value = "/cstmr/delete/auth")
|
@ManagerAuth
|
public R delete(@RequestParam(value="ids[]") Long[] ids){
|
for (Long id : ids){
|
cstmrService.deleteById(id);
|
}
|
return R.ok();
|
}
|
|
@RequestMapping(value = "/cstmrQuery/auth")
|
@ManagerAuth
|
public R query(String condition) {
|
EntityWrapper<Cstmr> wrapper = new EntityWrapper<>();
|
wrapper.like("name", condition);
|
Page<Cstmr> page = cstmrService.selectPage(new Page<>(0, 10), wrapper);
|
List<Map<String, Object>> result = new ArrayList<>();
|
for (Cstmr cstmr : page.getRecords()){
|
Map<String, Object> map = new HashMap<>();
|
map.put("id", cstmr.getId());
|
map.put("value", cstmr.getName());
|
result.add(map);
|
}
|
return R.ok(result);
|
}
|
|
@RequestMapping(value = "/cstmr/check/column/auth")
|
@ManagerAuth
|
public R query(@RequestBody JSONObject param) {
|
Wrapper<Cstmr> wrapper = new EntityWrapper<Cstmr>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
|
if (null != cstmrService.selectOne(wrapper)){
|
return R.parse(BaseRes.REPEAT).add(getComment(Cstmr.class, String.valueOf(param.get("key"))));
|
}
|
return R.ok();
|
}
|
|
/*************************************** 数据相关 ***********************************************/
|
|
/**
|
* excel导入
|
*/
|
@PostMapping(value = "/cstmr/excel/import/auth")
|
@ManagerAuth(memo = "甲方单位Excel导入")
|
// @Transactional
|
public R cstmrExcelImport(MultipartFile file) throws IOException {
|
InputStream inStream = file.getInputStream();
|
String fileMime = file.getContentType();
|
int excelVersion = 2007;
|
if ("application/vnd.ms-excel".equals(fileMime)) {
|
excelVersion = 2003;
|
}
|
Workbook book = null;
|
if (excelVersion == 2003) {
|
book = new HSSFWorkbook(inStream);
|
}
|
else { // 当 excel 是 2007 时
|
book = new XSSFWorkbook(inStream);
|
}
|
Sheet sheet = book.getSheetAt(0);
|
int totalRows = sheet.getLastRowNum() + 1; // 总
|
Long userId = getUserId();
|
Long hostId = getHostId();
|
Long deptId = getDeptId();
|
Date now = new Date();
|
DataFormatter dataFormatter = new DataFormatter();
|
for (int i = 2; i < totalRows; i++) {
|
Cstmr cstmr = new Cstmr();
|
Row row = sheet.getRow(i);
|
// 客户代号
|
String uuid = dataFormatter.formatCellValue(row.getCell(0));
|
if (!Cools.isEmpty(uuid)) {
|
if (cstmrService.selectByUuid(hostId, uuid) != null) {
|
// throw new CoolException(uuid + "客户代号已存在,请重新导入");
|
continue;
|
} else {
|
cstmr.setUuid(uuid);
|
}
|
} else {
|
cstmr.setUuid(cstmrService.getUuid(hostId));
|
}
|
// 客户代号
|
String name = dataFormatter.formatCellValue(row.getCell(1));
|
if (Cools.isEmpty(name)) {
|
throw new CoolException("第" + i + "行客户名称不能为空,请重新导入");
|
}
|
cstmr.setName(name);
|
// 客户类别
|
String type = dataFormatter.formatCellValue(row.getCell(2));
|
if (Cools.isEmpty(type)) {
|
throw new CoolException("第" + i + "行客户类别不能为空,请重新导入");
|
}
|
CstmrType cstmrType = cstmrTypeService.selectByName(hostId, type);
|
if (null == cstmrType) {
|
throw new CoolException("第" + i + "行客户类别不合法,请重新导入");
|
}
|
cstmr.setCstmrType(cstmrType.getId());
|
// 客户关系
|
cstmr.setRela(dataFormatter.formatCellValue(row.getCell(3)));
|
// 电话
|
cstmr.setTel(dataFormatter.formatCellValue(row.getCell(4)));
|
// 客户联系人
|
cstmr.setContacts(dataFormatter.formatCellValue(row.getCell(5)));
|
// 备注
|
cstmr.setRemarks(dataFormatter.formatCellValue(row.getCell(6)));
|
// 省
|
String province = dataFormatter.formatCellValue(row.getCell(7));
|
Dic dicProvince = dicService.selectByName(province);
|
if (Cools.isEmpty(dicProvince)) {
|
throw new CoolException("第" + i + "行省名不合法,请重新导入");
|
}
|
cstmr.setProvince(dicProvince.getCode());
|
// 市
|
String city = dataFormatter.formatCellValue(row.getCell(8));
|
Dic dicCity = dicService.selectByName(city);
|
if (Cools.isEmpty(dicCity)) {
|
throw new CoolException("第" + i + "行市名不合法,请重新导入");
|
}
|
cstmr.setCity(dicCity.getCode());
|
// 区
|
String district = dataFormatter.formatCellValue(row.getCell(9));
|
Dic dicDistrict = dicService.selectByName(district);
|
if (Cools.isEmpty(dicDistrict)) {
|
throw new CoolException("第" + i + "行县名不合法,请重新导入");
|
}
|
cstmr.setDistrict(dicDistrict.getCode());
|
// 详细地址
|
cstmr.setAddr(dataFormatter.formatCellValue(row.getCell(10)));
|
// 区分
|
cstmr.setType0(dataFormatter.formatCellValue(row.getCell(11)));
|
cstmr.setHostId(hostId);
|
cstmr.setDeptId(deptId);
|
cstmr.setUserId(userId);
|
cstmr.setStatus(1);
|
cstmr.setCreateBy(userId);
|
cstmr.setCreateTime(now);
|
cstmr.setUpdateBy(userId);
|
cstmr.setUpdateTime(now);
|
if (!cstmrService.insert(cstmr)) {
|
throw new CoolException("保存失败,请重新导入");
|
}
|
}
|
return R.ok();
|
}
|
|
/**
|
* excel导出
|
*/
|
@PostMapping(value = "/cstmr/excel/export/auth")
|
@ManagerAuth
|
public void cstmrExcelExport(HttpServletResponse response) throws IOException {
|
|
}
|
|
/******************************** 跟进人 ***************************************/
|
|
@Autowired
|
private CstmrFollService cstmrFollService;
|
@Autowired
|
private UserService userService;
|
|
@RequestMapping(value = "/cstmr/followers/table/auth")
|
@ManagerAuth
|
public R cstmrFollowersTable(@RequestParam("cstmrId") Long cstmrId) {
|
List<CstmrFoll> cstmrFolls = cstmrFollService.selectList(new EntityWrapper<CstmrFoll>().eq("cstmr_id", cstmrId).orderBy("id", false));
|
List<FollowerTableVo> result = new ArrayList<>();
|
for (CstmrFoll cstmrFoll : cstmrFolls) {
|
User user = userService.selectById(cstmrFoll.getUserId());
|
FollowerTableVo vo = new FollowerTableVo();
|
vo.setUserId(user.getId());
|
vo.setUserName(user.getNickname());
|
result.add(vo);
|
}
|
return R.ok().add(result);
|
}
|
|
@RequestMapping(value = "/cstmr/followers/add/auth")
|
@ManagerAuth
|
@Transactional
|
public R cstmrFollowersAdd(@RequestParam("cstmrId") Long cstmrId,
|
@RequestParam("followerIds[]") Long[] followerIds) {
|
if (Cools.isEmpty(cstmrId, followerIds)) {
|
return R.parse(BaseRes.PARAM);
|
}
|
for (Long userId : followerIds) {
|
if (cstmrFollService.selectCount(new EntityWrapper<CstmrFoll>().eq("cstmr_id", cstmrId).eq("user_id", userId)) == 0) {
|
CstmrFoll cstmrFoll = new CstmrFoll();
|
cstmrFoll.setCstmrId(cstmrId);
|
cstmrFoll.setUserId(userId);
|
if (!cstmrFollService.insert(cstmrFoll)) {
|
throw new CoolException("添加失败,请联系管理员");
|
}
|
}
|
}
|
return R.ok("添加成功");
|
}
|
|
@RequestMapping(value = "/cstmr/followers/remove/auth")
|
@ManagerAuth
|
public R cstmrFollowersRemove(@RequestParam("cstmrId") Long cstmrId,
|
@RequestParam("userId") Long userId) {
|
if (Cools.isEmpty(cstmrId, userId)) {
|
return R.parse(BaseRes.PARAM);
|
}
|
if (!cstmrFollService.delete(new EntityWrapper<CstmrFoll>().eq("cstmr_id", cstmrId).eq("user_id", userId))) {
|
throw new CoolException("删除失败,请联系管理员");
|
}
|
return R.ok("删除成功");
|
}
|
|
@RequestMapping("/cstmr/all/get/kv")
|
@ManagerAuth
|
public R getDataKV(@RequestParam(required = false) String condition) {
|
User user = getUser(); assert user != null;
|
Role role = getRole(); assert role != null;
|
Page<Cstmr> page = cstmrService.getPage(new Page<>(1, 30)
|
, getHostId()
|
, role.judgeLeader() ? String.valueOf(user.getDeptId()) : null
|
, user.getId()
|
, condition);
|
List<KeyValueVo> vos = new ArrayList<>();
|
page.getRecords().forEach(item -> vos.add(new KeyValueVo(item.getName(), item.getId())));
|
return R.ok().add(vos);
|
}
|
|
}
|