商机管理

This commit is contained in:
Alright-del
2025-03-15 18:40:54 +08:00
parent d617c6a8a8
commit 6151da6057
7 changed files with 88 additions and 2 deletions

View File

@@ -3,7 +3,7 @@ package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.oa.domain.OaBusiness;
import com.ruoyi.oa.domain.vo.OaProductVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
@@ -117,4 +117,21 @@ public class OaBusinessController extends BaseController {
public TableDataInfo<OaProductVo> getBusinessProducts(OaBusinessBo bo) {
return iOaBusinessService.getBusinessProducts(bo);
}
@GetMapping("/customer/{customerId}")
@Log(title = "CRM 商机", businessType = BusinessType.EXPORT)
public TableDataInfo<OaBusiness> getBusinessByCustomerId(@PathVariable Long customerId, PageQuery pageQuery){
return iOaBusinessService.getBusinessByCustomerId(customerId,pageQuery);
}
@Log(title = "CRM 商机", businessType = BusinessType.DELETE)
@DeleteMapping
public R<Void> deleteBusiness(@RequestParam Long businessId){
iOaBusinessService.deleteBusiness(businessId);
return R.ok();
}
@GetMapping("/follow/{businessId}")
public R<Void> setFollow(@PathVariable Long businessId){
iOaBusinessService.setFollow(businessId);
return R.ok();
}
}

View File

@@ -1,5 +1,5 @@
package com.ruoyi.oa.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.ruoyi.oa.domain.OaBusiness;
@@ -8,6 +8,7 @@ import com.ruoyi.oa.domain.bo.SysOaProjectBo;
import com.ruoyi.oa.domain.vo.OaBusinessVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import com.ruoyi.oa.domain.vo.OaProductVo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -24,4 +25,13 @@ public interface OaBusinessMapper extends BaseMapperPlus<OaBusinessMapper, OaBus
* 联查商机与产品以及其关联表
*/
List<OaProductVo> getBusinessProducts(OaBusinessBo bo,@Param(Constants.WRAPPER) QueryWrapper<OaBusiness> queryWrapper);
Page<OaBusinessVo> getBusinessByCustomerId(Long customerId);
@Delete( "delete from oa_business where business_id=#{businessId}"
)
void deleteBusinessById(Long businessId);
void setFollow(Long businessId);
}

View File

@@ -3,6 +3,10 @@ package com.ruoyi.oa.mapper;
import com.ruoyi.oa.domain.OaBusinessProduct;
import com.ruoyi.oa.domain.vo.OaBusinessProductVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* CRM 商机产品关联Mapper接口
@@ -12,4 +16,7 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
*/
public interface OaBusinessProductMapper extends BaseMapperPlus<OaBusinessProductMapper, OaBusinessProduct, OaBusinessProductVo> {
List<OaBusinessProduct> selectByBusinessId(Long businessId);
void deleteByBusinessId(Long businessId);
}

View File

@@ -1,6 +1,7 @@
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;
@@ -59,4 +60,10 @@ public interface IOaBusinessService {
* 查询CRM 批量商机
*/
List<OaBusinessVo> queryByIds(Collection<Long> list);
TableDataInfo<OaBusiness> getBusinessByCustomerId(Long customerId, PageQuery pageQuery);
void deleteBusiness(Long businessId);
void setFollow(Long businessId);
}

View File

@@ -8,7 +8,9 @@ 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.OaBusinessProduct;
import com.ruoyi.oa.domain.vo.OaProductVo;
import com.ruoyi.oa.mapper.OaBusinessProductMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.OaBusinessBo;
@@ -33,6 +35,7 @@ import java.util.Collection;
public class OaBusinessServiceImpl implements IOaBusinessService {
private final OaBusinessMapper baseMapper;
private final OaBusinessProductMapper oaBusinessProductMapper;
/**
* 查询CRM 商机
@@ -143,4 +146,30 @@ public class OaBusinessServiceImpl implements IOaBusinessService {
}
return baseMapper.selectVoList(new LambdaQueryWrapper<OaBusiness>().in(OaBusiness::getBusinessId, list));
}
@Override
public TableDataInfo<OaBusiness> getBusinessByCustomerId(Long customerId,PageQuery pageQuery) {
List<OaBusiness> list = buildQueryByCustomerId(customerId);
return TableDataInfo.build(list);
}
private List<OaBusiness> buildQueryByCustomerId(Long id) {
LambdaQueryWrapper<OaBusiness> lqw = new LambdaQueryWrapper<>();
lqw.eq( OaBusiness::getCustomerId,id);
return baseMapper.selectList(lqw);
}
@Override
public void deleteBusiness(Long businessId) {
baseMapper.deleteBusinessById(businessId);
List<OaBusinessProduct> oaBusinessProducts = oaBusinessProductMapper.selectByBusinessId(businessId);
if(!oaBusinessProducts.isEmpty()){
oaBusinessProductMapper.deleteByBusinessId(businessId);
}
}
@Override
public void setFollow(Long businessId) {
baseMapper.setFollow(businessId);
}
}

View File

@@ -36,6 +36,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join oa_product op on obp.product_id = op.product_id
${ew.getCustomSqlSegment}
</select>
<update id="setFollow">
update oa_business set follow_up_status = 1 where business_id=#{businessId}
</update>
<select id="getBusinessByCustomerId" resultType="com.ruoyi.oa.domain.vo.OaBusinessVo">
select * from oa_business
<where >
customerId=#{customerId}
</where>
</select>
</mapper>

View File

@@ -19,5 +19,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="delFlag" column="del_flag"/>
</resultMap>
<delete id="deleteByBusinessId">
delete from oa_business_product where business_id = #{businessId}
</delete>
<select id="selectByBusinessId" resultType="com.ruoyi.oa.domain.OaBusinessProduct">
select * from oa_business_product where business_id = #{businessId}
</select>
</mapper>