This commit is contained in:
慕下 2024-03-15 17:35:56 +08:00
parent 9207d86900
commit 1f0b5a4647
15 changed files with 247 additions and 8 deletions

View File

@ -227,6 +227,13 @@
<version>${ruoyi.version}</version>
</dependency>
<!-- MongoDB服务模块 -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-mongodb</artifactId>
<version>${ruoyi.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
@ -237,6 +244,7 @@
<module>ruoyi-common</module>
<module>ruoyi-tenant</module>
<module>ruoyi-crm</module>
<module>ruoyi-mongodb</module>
</modules>
<packaging>pom</packaging>

View File

@ -67,6 +67,13 @@
<artifactId>ruoyi-crm</artifactId>
</dependency>
<!-- MongoDB服务模块 -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-mongodb</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
<build>

View File

@ -1,5 +1,6 @@
package com.ruoyi.web.controller.system;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
@ -88,6 +89,20 @@ public class SysDeptController extends BaseController
return AjaxResult.success(deptService.buildDeptTreeSelect(depts));
}
/**
* 服务工单指定销售人员
* @param dept
* @return
*/
@GetMapping("/designatedPerson")
public AjaxResult designatedPerson(SysDept dept)
{
List<SysDept> depts = deptService.selectDeptList(dept);
ArrayList<Object> list = new ArrayList<>();
return AjaxResult.success(depts);
}
/**
* 加载对应角色部门列表树
*/

View File

@ -9,6 +9,8 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.crm.domain.CrmCustomer;
import com.ruoyi.crm.domain.enums.CustomerFolder;
import com.ruoyi.crm.service.ICrmCustomerService;
import com.ruoyi.crm.system.domain.ContactPerson;
import com.ruoyi.crm.system.service.IContactPersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@ -17,6 +19,7 @@ import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.UUID;
/**
* 客户Controller
@ -30,6 +33,8 @@ public class CrmCustomerController extends BaseController
{
@Autowired
private ICrmCustomerService crmCustomerService;
@Autowired
private IContactPersonService contactPersonService;
/**
* 查询成交客户列表
@ -136,7 +141,7 @@ public class CrmCustomerController extends BaseController
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String formattedDate = currentDate.format(formatter);
//根据当前时间生成客户编号
crmCustomer.setCode("zy_"+formattedDate+crmCustomer.getId());
crmCustomer.setCode("zy_"+formattedDate+crmCustomer.getId()+ UUID.randomUUID().toString().replace("-","").substring(0,6));
return toAjax(crmCustomerService.insertCrmCustomer(crmCustomer));
}
@ -148,7 +153,27 @@ public class CrmCustomerController extends BaseController
@PutMapping
public AjaxResult edit(@RequestBody CrmCustomer crmCustomer)
{
//修改客户联系人时同步联系人信息临时逻辑
//找到这个客户原先联系人信息
CrmCustomer customerById = crmCustomerService.selectCrmCustomerById(crmCustomer.getId());
ContactPerson contactPerson = new ContactPerson();
//设置更新者
crmCustomer.setUpdateBy(getUsername());
//封装联系人信息
contactPerson.setName(customerById.getLinkman());
contactPerson.setPhoneNumber(customerById.getPhone());
//查出联系人
List<ContactPerson> list = contactPersonService.selectContactPersonList(contactPerson);
for (ContactPerson person : list) {
//找出对应联系人信息
if (customerById.getLinkman().equals(person.getName()) && customerById.getPhone().equals(person.getPhoneNumber())){
contactPerson.setPhoneNumber(crmCustomer.getPhone());
contactPerson.setName(crmCustomer.getLinkman());
contactPerson.setId(person.getId());
//修改联系人
contactPersonService.updateContactPerson(contactPerson);
}
}
return toAjax(crmCustomerService.updateCrmCustomer(crmCustomer));
}

View File

@ -6,6 +6,8 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.crm.domain.CrmCustomer;
import com.ruoyi.crm.service.ICrmCustomerService;
import com.ruoyi.crm.system.domain.ContactPerson;
import com.ruoyi.crm.system.service.IContactPersonService;
import org.springframework.beans.factory.annotation.Autowired;
@ -27,6 +29,8 @@ public class ContactPersonController extends BaseController
{
@Autowired
private IContactPersonService contactPersonService;
@Autowired
private ICrmCustomerService crmCustomerService;
/**
* 查询联系人列表
@ -82,6 +86,14 @@ public class ContactPersonController extends BaseController
@PutMapping
public AjaxResult edit(@RequestBody ContactPerson contactPerson)
{
//临时逻辑
//未变动前的联系人
ContactPerson contactPersonById = contactPersonService.selectContactPersonById(contactPerson.getId());
//该联系人关联的客户
CrmCustomer crmCustomer = crmCustomerService.selectCrmCustomerById(contactPersonById.getCustomerId());
crmCustomer.setLinkman(contactPerson.getName());
crmCustomer.setPhone(contactPerson.getPhoneNumber());
crmCustomerService.updateCrmCustomer(crmCustomer);
return toAjax(contactPersonService.updateContactPerson(contactPerson));
}

42
ruoyi-mongodb/pom.xml Normal file
View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.8.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-mongodb</artifactId>
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
<!-- System模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--MongoDB依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,35 @@
package com.ruoyi.mongodb.conreoller;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.mongodb.domain.DynamicData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
public class DynamicDataController {
@Autowired
private MongoTemplate mongoTemplate;
//保存数据
@PostMapping("/saveDynamicData")
public AjaxResult saveDynamicData(@RequestBody Map<String, Object> requestData) {
DynamicData dynamicData = new DynamicData();
dynamicData.setData(requestData);
mongoTemplate.save(dynamicData);
return AjaxResult.success(dynamicData);
}
//查询数据
@GetMapping("/selectDynamicData")
public AjaxResult selectDynamicData(String id) {
DynamicData data = mongoTemplate.findById(id, DynamicData.class);
return AjaxResult.success(data);
}
}

View File

@ -0,0 +1,45 @@
package com.ruoyi.mongodb.domain;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Map;
@Document(collection = "dynamicData")
public class DynamicData {
@Id
private String id;
private Map<String, Object> data;
public DynamicData() {
}
public DynamicData(String id, Map<String, Object> data) {
this.id = id;
this.data = data;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
@Override
public String toString() {
return "DynamicData{" +
"id='" + id + '\'' +
", data=" + data +
'}';
}
}

View File

@ -33,6 +33,14 @@ export function treeselect() {
})
}
// 查询服务工单下拉树结构
export function designatedPerson() {
return request({
url: '/system/dept/designatedPerson',
method: 'get'
})
}
// 根据角色ID查询部门树结构
export function roleDeptTreeselect(roleId) {
return request({
@ -65,4 +73,4 @@ export function delDept(deptId) {
url: '/system/dept/' + deptId,
method: 'delete'
})
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 606 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -524,6 +524,7 @@
:show-count="true"
placeholder="请输入售后技术人员"
/>
<!-- <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>-->
</el-form-item>
<!-- <el-form-item label="服务地址(省/自治区/直辖市)" prop="serviceAddress">-->
<!-- <el-input v-model="form.serviceAddress" placeholder="请输入服务地址(省/自治区/直辖市)" />-->
@ -635,7 +636,7 @@
import { listTicket, getTicket, delTicket, addTicket, updateTicket } from "@/api/crm/ticket";
import CommentComponent from '../customer/Comment';
import { listOrder } from "@/api/crm/order";
import { treeselect } from '@/api/system/dept'
import { designatedPerson } from '@/api/system/dept'
import { dropDownList, getCustomer } from "@/api/crm/customer";
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
@ -673,6 +674,45 @@ export default {
customerCustomerList: [],
//
deptOptions: undefined,
data: [{
label: '一级 1',
children: [{
label: '二级 1-1',
// children: [{
// label: ' 1-1-1'
// }]
}]
}, {
label: '一级 2',
children: [{
label: '二级 2-1',
// children: [{
// label: ' 2-1-1'
// }]
}, {
label: '二级 2-2',
// children: [{
// label: ' 2-2-1'
// }]
}]
}, {
label: '一级 3',
children: [{
label: '二级 3-1',
// children: [{
// label: ' 3-1-1'
// }]
}, {
label: '二级 3-2',
// children: [{
// label: ' 3-2-1'
// }]
}]
}],
defaultProps: {
children: 'children',
label: 'label'
},
//
queryParams: {
pageNum: 1,
@ -753,9 +793,9 @@ export default {
},
/** 查询部门下拉树结构 */
getTreeselect() {
treeselect().then((response) => {
designatedPerson().then((response) => {
console.log(response,'res')
this.deptOptions = response.data
this.deptOptions.label = response.data.deptName
})
},
//

View File

@ -1,7 +1,8 @@
<template>
<div class="login">
<img src="@/assets/left-img.png">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">众悦智能CRM系统</h3>
<h3 class="title"></h3>
<el-form-item prop="tenant">
<el-input v-model="loginForm.tenant" type="text" auto-complete="off" placeholder="租户编号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
@ -164,7 +165,7 @@ export default {
justify-content: center;
align-items: center;
height: 100%;
background-image: url('../assets/images/login-background.jpg');
background-image: url('../assets/login-bg.png');
background-size: cover;
}
.title {
@ -174,9 +175,10 @@ export default {
}
.login-form {
border-radius: 6px;
border-radius:0 6px 6px 0;
background: #ffffff;
width: 400px;
height: 478px;
padding: 25px 25px 5px 25px;
.el-input {
height: 38px;