CRM 通过商机联查产品完成 ,修复代码生成的mapper.xml格式错误
This commit is contained in:
@@ -4,6 +4,7 @@ import java.util.List;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import com.ruoyi.oa.domain.vo.OaProductVo;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
@@ -105,4 +106,14 @@ public class OaBusinessController extends BaseController {
|
|||||||
@PathVariable Long[] businessIds) {
|
@PathVariable Long[] businessIds) {
|
||||||
return toAjax(iOaBusinessService.deleteWithValidByIds(Arrays.asList(businessIds), true));
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,97 +27,81 @@ public class OaBusinessBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 编号
|
* 编号
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "编号不能为空", groups = { EditGroup.class })
|
|
||||||
private Long businessId;
|
private Long businessId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商机名称
|
* 商机名称
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "商机名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户编号
|
* 客户编号
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "客户编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Long customerId;
|
private Long customerId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 跟进状态
|
* 跟进状态
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "跟进状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Integer followUpStatus;
|
private Integer followUpStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最后跟进时间
|
* 最后跟进时间
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "最后跟进时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Date contactLastTime;
|
private Date contactLastTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下次联系时间
|
* 下次联系时间
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "下次联系时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Date contactNextTime;
|
private Date contactNextTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 负责人的用户编号
|
* 负责人的用户编号
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "负责人的用户编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Long ownerUserId;
|
private Long ownerUserId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商机状态类型编号
|
* 商机状态类型编号
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "商机状态类型编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Long statusTypeId;
|
private Long statusTypeId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商机状态编号
|
* 商机状态编号
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "商机状态编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Long statusId;
|
private Long statusId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结束状态:1-赢单 2-输单3-无效
|
* 结束状态:1-赢单 2-输单3-无效
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "结束状态:1-赢单 2-输单3-无效不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Long endStatus;
|
private Long endStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 预计成交日期
|
* 预计成交日期
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "预计成交日期不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Date dealTime;
|
private Date dealTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品总金额,单位:元
|
* 产品总金额,单位:元
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "产品总金额,单位:元不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private BigDecimal totalProductPrice;
|
private BigDecimal totalProductPrice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 整单折扣,百分比
|
* 整单折扣,百分比
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "整单折扣,百分比不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private BigDecimal discountPercent;
|
private BigDecimal discountPercent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商机总金额,单位:元
|
* 商机总金额,单位:元
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "商机总金额,单位:元不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private BigDecimal totalPrice;
|
private BigDecimal totalPrice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结束时的备注
|
* 结束时的备注
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "结束时的备注不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private String endRemark;
|
private String endRemark;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,16 @@
|
|||||||
package com.ruoyi.oa.mapper;
|
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.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.oa.domain.vo.OaBusinessVo;
|
||||||
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
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接口
|
* CRM 商机Mapper接口
|
||||||
@@ -12,4 +20,8 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
|||||||
*/
|
*/
|
||||||
public interface OaBusinessMapper extends BaseMapperPlus<OaBusinessMapper, OaBusiness, OaBusinessVo> {
|
public interface OaBusinessMapper extends BaseMapperPlus<OaBusinessMapper, OaBusiness, OaBusinessVo> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联查商机与产品以及其关联表
|
||||||
|
*/
|
||||||
|
List<OaProductVo> getBusinessProducts(OaBusinessBo bo,@Param(Constants.WRAPPER) QueryWrapper<OaBusiness> queryWrapper);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.ruoyi.oa.domain.vo.OaBusinessVo;
|
|||||||
import com.ruoyi.oa.domain.bo.OaBusinessBo;
|
import com.ruoyi.oa.domain.bo.OaBusinessBo;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
import com.ruoyi.oa.domain.vo.OaProductVo;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -46,4 +47,10 @@ public interface IOaBusinessService {
|
|||||||
* 校验并批量删除CRM 商机信息
|
* 校验并批量删除CRM 商机信息
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联查商机与产品以及其关联表
|
||||||
|
*/
|
||||||
|
TableDataInfo<OaProductVo> getBusinessProducts(OaBusinessBo bo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package com.ruoyi.oa.service.impl;
|
package com.ruoyi.oa.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.ruoyi.oa.domain.vo.OaProductVo;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.oa.domain.bo.OaBusinessBo;
|
import com.ruoyi.oa.domain.bo.OaBusinessBo;
|
||||||
@@ -119,4 +121,14 @@ public class OaBusinessServiceImpl implements IOaBusinessService {
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
@@ -31,4 +29,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</resultMap>
|
</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>
|
</mapper>
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|||||||
Reference in New Issue
Block a user