diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaCustomerController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaCustomerController.java index 4ca5883..cdf6b13 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaCustomerController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaCustomerController.java @@ -2,12 +2,13 @@ package com.ruoyi.oa.controller; import java.util.List; import java.util.Arrays; -import java.util.concurrent.TimeUnit; +import com.ruoyi.oa.domain.bo.OaFollowUpRecordAddBo; +import com.ruoyi.oa.service.IOaFollowUpRecordService; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; -import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.ruoyi.common.annotation.RepeatSubmit; @@ -17,7 +18,6 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; -import com.ruoyi.common.core.validate.QueryGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.oa.domain.vo.OaCustomerVo; @@ -39,6 +39,9 @@ public class OaCustomerController extends BaseController { private final IOaCustomerService iOaCustomerService; + @Autowired + private IOaFollowUpRecordService iOaFollowUpRecordService; + /** * 查询CRM 客户列表 */ @@ -109,4 +112,13 @@ public class OaCustomerController extends BaseController { @PathVariable Long[] customerIds) { return toAjax(iOaCustomerService.deleteWithValidByIds(Arrays.asList(customerIds), true)); } + + /** + * 添加跟进记录 + */ + @PostMapping("/follow") + public R addFollow(@Validated(AddGroup.class) @RequestBody OaFollowUpRecordAddBo bo) { + return toAjax(iOaFollowUpRecordService.insertByAddBo(bo)); + + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaFollowUpRecordController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaFollowUpRecordController.java index f1d3b4b..c2490e7 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaFollowUpRecordController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaFollowUpRecordController.java @@ -1,16 +1,14 @@ package com.ruoyi.oa.controller; -import java.util.Collections; + import java.util.List; import java.util.Arrays; -import java.util.concurrent.TimeUnit; -import com.ruoyi.oa.service.IOaBusinessProductService; +import com.ruoyi.oa.domain.vo.OaFollowUpRecordQueryVo; import com.ruoyi.oa.service.IOaBusinessService; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; -import cn.dev33.satoken.annotation.SaCheckPermission; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.ruoyi.common.annotation.RepeatSubmit; @@ -20,7 +18,6 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; -import com.ruoyi.common.core.validate.QueryGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.oa.domain.vo.OaFollowUpRecordVo; @@ -116,4 +113,13 @@ public class OaFollowUpRecordController extends BaseController { @PathVariable Long[] followIds) { return toAjax(iOaFollowUpRecordService.deleteWithValidByIds(Arrays.asList(followIds), true)); } + /** + * 根据用户id查询跟进记录列表 + */ + @GetMapping("/list/{customerId}") + public R selectByCustomerIdId( + @NotNull(message = "主键不能为空") + @PathVariable Long customerId) { + return R.ok(iOaFollowUpRecordService.selectByCustomerId(customerId)); + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaFollowUpRecordAddBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaFollowUpRecordAddBo.java new file mode 100644 index 0000000..a9fbd58 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaFollowUpRecordAddBo.java @@ -0,0 +1,61 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class OaFollowUpRecordAddBo extends BaseEntity { + /** + * 客户id + */ + private Long customerId; + + /** + * 最后跟进时间 + */ + private Date contactLastTime; + + /** + * 最后跟进内容 + */ + private String contactLastContent; + + /** + * 下次跟进时间 + */ + private Date contactNextTime; + + /** + * 负责人id + */ + private Long ownerUserId; + + /** + * 跟进类型 + */ + private Long type; + + /** + * 涉及图片 + */ + private String picUrls; + + /** + * 涉及附件 + */ + private String fileUrls; + + /** + * 下次时间 + */ + private Date nextTime; + + /** + * 关联的商机编号数组 + */ + private String businessIds; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaFollowUpRecordQueryVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaFollowUpRecordQueryVo.java new file mode 100644 index 0000000..d5ccc2b --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaFollowUpRecordQueryVo.java @@ -0,0 +1,50 @@ +package com.ruoyi.oa.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import lombok.Data; + +import java.util.List; + +@Data +@ExcelIgnoreUnannotated +public class OaFollowUpRecordQueryVo { + /** + * 跟进id + */ + private String followId; + + /** + * 类型 + */ + private String type; + + /** + * 跟进内容 + */ + private String content; + + /** + * 下次跟进时间 + */ + private String nextTime; + + /** + * 图片 + */ + private String picUrls; + + /** + * 附件 + */ + private String fileUrls; + + /** + * 涉及商机id + */ + private String businessIds; + + /** + * 封存所有商机 + */ + private List businessVoList; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBusinessService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBusinessService.java index 62ba135..ddbd273 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBusinessService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBusinessService.java @@ -1,11 +1,10 @@ package com.ruoyi.oa.service; -import com.ruoyi.oa.domain.OaBusiness; + import com.ruoyi.oa.domain.vo.OaBusinessVo; import com.ruoyi.oa.domain.bo.OaBusinessBo; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.oa.domain.vo.OaFollowUpRecordVo; import com.ruoyi.oa.domain.vo.OaProductVo; import java.util.Collection; @@ -55,4 +54,9 @@ public interface IOaBusinessService { */ TableDataInfo getBusinessProducts(OaBusinessBo bo); + + /** + * 查询CRM 批量商机 + */ + List queryByIds(Collection list); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaFollowUpRecordService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaFollowUpRecordService.java index 6c45be4..87b1b1d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaFollowUpRecordService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaFollowUpRecordService.java @@ -1,6 +1,8 @@ package com.ruoyi.oa.service; -import com.ruoyi.oa.domain.OaFollowUpRecord; + +import com.ruoyi.oa.domain.bo.OaFollowUpRecordAddBo; +import com.ruoyi.oa.domain.vo.OaFollowUpRecordQueryVo; import com.ruoyi.oa.domain.vo.OaFollowUpRecordVo; import com.ruoyi.oa.domain.bo.OaFollowUpRecordBo; import com.ruoyi.common.core.page.TableDataInfo; @@ -48,4 +50,8 @@ public interface IOaFollowUpRecordService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); List selectByBusinessIds(Collection list); + + OaFollowUpRecordQueryVo selectByCustomerId(Long customerId); + + Boolean insertByAddBo(OaFollowUpRecordAddBo bo); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBusinessServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBusinessServiceImpl.java index 3519bc3..3d8bdc2 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBusinessServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBusinessServiceImpl.java @@ -8,7 +8,6 @@ import com.ruoyi.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ruoyi.oa.domain.vo.OaFollowUpRecordVo; import com.ruoyi.oa.domain.vo.OaProductVo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -133,4 +132,15 @@ public class OaBusinessServiceImpl implements IOaBusinessService { queryWrapper.eq(bo.getBusinessId() != null,"ob.business_id", bo.getBusinessId()); return TableDataInfo.build(baseMapper.getBusinessProducts(bo,queryWrapper)); } + + /** + * 查询CRM 批量商机 + */ + @Override + public List queryByIds(Collection list) { + if (list == null || list.isEmpty()) { + return Collections.emptyList(); + } + return baseMapper.selectVoList(new LambdaQueryWrapper().in(OaBusiness::getBusinessId, list)); + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaFollowUpRecordServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaFollowUpRecordServiceImpl.java index a4a13ac..3ee958c 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaFollowUpRecordServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaFollowUpRecordServiceImpl.java @@ -7,7 +7,11 @@ import com.ruoyi.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.bo.OaFollowUpRecordAddBo; +import com.ruoyi.oa.domain.vo.OaFollowUpRecordQueryVo; +import com.ruoyi.oa.service.IOaBusinessService; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.oa.domain.bo.OaFollowUpRecordBo; import com.ruoyi.oa.domain.vo.OaFollowUpRecordVo; @@ -15,10 +19,8 @@ import com.ruoyi.oa.domain.OaFollowUpRecord; import com.ruoyi.oa.mapper.OaFollowUpRecordMapper; import com.ruoyi.oa.service.IOaFollowUpRecordService; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; /** * CRM 跟进记录Service业务层处理 @@ -32,6 +34,9 @@ public class OaFollowUpRecordServiceImpl implements IOaFollowUpRecordService { private final OaFollowUpRecordMapper baseMapper; + @Autowired + private IOaBusinessService oaBusinessService; + /** * 查询CRM 跟进记录 */ @@ -127,4 +132,37 @@ public class OaFollowUpRecordServiceImpl implements IOaFollowUpRecordService { return baseMapper.selectVoList(queryWrapper); } + + /** + * 添加跟进记录 + */ + @Override + public Boolean insertByAddBo(OaFollowUpRecordAddBo bo) { + OaFollowUpRecord add = BeanUtil.toBean(bo, OaFollowUpRecord.class); + add.setContent(bo.getContactLastContent()); + validEntityBeforeSave(add); + return baseMapper.insert(add) > 0; + } + + /** + * 通过顾客id获取跟进记录 + */ + @Override + public OaFollowUpRecordQueryVo selectByCustomerId(Long customerId) { + //通过customerId查询出跟进记录 + OaFollowUpRecord followUpRecord=baseMapper.selectOne(new LambdaQueryWrapper().eq(OaFollowUpRecord::getCustomerId,customerId)); + + OaFollowUpRecordQueryVo queryVo=BeanUtil.toBean(followUpRecord,OaFollowUpRecordQueryVo.class); + //通过businessIds查询出业务 + if (StringUtils.isNotBlank(followUpRecord.getBusinessIds())){ + //分割businessIds + List businessIds = Arrays.stream(followUpRecord.getBusinessIds().split(",")) + .map(String::trim) + .map(Long::parseLong) + .collect(Collectors.toList()); + //批量查询出业务 + queryVo.setBusinessVoList(oaBusinessService.queryByIds(businessIds)); + } + return queryVo; + } }