CRM 通过商机联查产品完成 ,修复代码生成的mapper.xml格式错误

This commit is contained in:
liuzongkun999
2025-03-12 13:46:44 +08:00
parent c8cce87fe2
commit d6d5a5f7ce
11 changed files with 51 additions and 24 deletions

View File

@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.oa.domain.vo.OaProductVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
@@ -105,4 +106,14 @@ public class OaBusinessController extends BaseController {
@PathVariable Long[] businessIds) {
return toAjax(iOaBusinessService.deleteWithValidByIds(Arrays.asList(businessIds), true));
}
/**
* 联查商机与产品以及其关联表
*/
@SaCheckPermission("oa:business:query")
@GetMapping("/BusinessProducts")
public R<TableDataInfo<OaProductVo>> getBusinessProducts(OaBusinessBo bo) {
return R.ok(iOaBusinessService.getBusinessProducts(bo));
}
}

View File

@@ -27,97 +27,81 @@ public class OaBusinessBo extends BaseEntity {
/**
* 编号
*/
@NotNull(message = "编号不能为空", groups = { EditGroup.class })
private Long businessId;
/**
* 商机名称
*/
@NotBlank(message = "商机名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 客户编号
*/
@NotNull(message = "客户编号不能为空", groups = { AddGroup.class, EditGroup.class })
private Long customerId;
/**
* 跟进状态
*/
@NotNull(message = "跟进状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer followUpStatus;
/**
* 最后跟进时间
*/
@NotNull(message = "最后跟进时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date contactLastTime;
/**
* 下次联系时间
*/
@NotNull(message = "下次联系时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date contactNextTime;
/**
* 负责人的用户编号
*/
@NotNull(message = "负责人的用户编号不能为空", groups = { AddGroup.class, EditGroup.class })
private Long ownerUserId;
/**
* 商机状态类型编号
*/
@NotNull(message = "商机状态类型编号不能为空", groups = { AddGroup.class, EditGroup.class })
private Long statusTypeId;
/**
* 商机状态编号
*/
@NotNull(message = "商机状态编号不能为空", groups = { AddGroup.class, EditGroup.class })
private Long statusId;
/**
* 结束状态1-赢单 2-输单3-无效
*/
@NotNull(message = "结束状态1-赢单 2-输单3-无效不能为空", groups = { AddGroup.class, EditGroup.class })
private Long endStatus;
/**
* 预计成交日期
*/
@NotNull(message = "预计成交日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date dealTime;
/**
* 产品总金额,单位:元
*/
@NotNull(message = "产品总金额,单位:元不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal totalProductPrice;
/**
* 整单折扣,百分比
*/
@NotNull(message = "整单折扣,百分比不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal discountPercent;
/**
* 商机总金额,单位:元
*/
@NotNull(message = "商机总金额,单位:元不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal totalPrice;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
/**
* 结束时的备注
*/
@NotBlank(message = "结束时的备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String endRemark;

View File

@@ -1,8 +1,16 @@
package com.ruoyi.oa.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.ruoyi.oa.domain.OaBusiness;
import com.ruoyi.oa.domain.bo.OaBusinessBo;
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.Param;
import java.util.List;
/**
* CRM 商机Mapper接口
@@ -12,4 +20,8 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
*/
public interface OaBusinessMapper extends BaseMapperPlus<OaBusinessMapper, OaBusiness, OaBusinessVo> {
/**
* 联查商机与产品以及其关联表
*/
List<OaProductVo> getBusinessProducts(OaBusinessBo bo,@Param(Constants.WRAPPER) QueryWrapper<OaBusiness> queryWrapper);
}

View File

@@ -5,6 +5,7 @@ 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.OaProductVo;
import java.util.Collection;
import java.util.List;
@@ -46,4 +47,10 @@ public interface IOaBusinessService {
* 校验并批量删除CRM 商机信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 联查商机与产品以及其关联表
*/
TableDataInfo<OaProductVo> getBusinessProducts(OaBusinessBo bo);
}

View File

@@ -1,12 +1,14 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
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.OaProductVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.OaBusinessBo;
@@ -119,4 +121,14 @@ public class OaBusinessServiceImpl implements IOaBusinessService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 联查商机与产品以及其关联表
*/
@Override
public TableDataInfo<OaProductVo> getBusinessProducts(OaBusinessBo bo) {
QueryWrapper<OaBusiness> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(bo.getBusinessId() != null,"oa_business.business_id", bo.getBusinessId());
return TableDataInfo.build(baseMapper.getBusinessProducts(bo,queryWrapper));
}
}

View File

@@ -1,5 +1,3 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
@@ -31,4 +29,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<select id="getBusinessProducts" resultType="com.ruoyi.oa.domain.vo.OaProductVo">
select op.product_id, op.product_name, op.product_number, op.unit, op.price, op.status, op.category_id, op.description, op.deleted
from oa_business ob
left join oa_business_product obp on ob.business_id = obp.business_id
left join oa_product op on obp.product_id = op.product_id
${ew.getCustomSqlSegment}
</select>
</mapper>

View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

View File

@@ -1,5 +1,3 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"