This commit is contained in:
PQZ 2024-08-02 18:18:40 +08:00
parent 7b1eada5f1
commit e0c71caa88
7 changed files with 118 additions and 29 deletions

View File

@ -0,0 +1,10 @@
package cn.iocoder.yudao.common;
/**
* 通用常量类
* @author PQZ
* @date 16:20 2024/8/1
**/
public class BaseConstants {
/**政企客户经办人*/
public static final String CUS_TYPE_CORP_ATTN = "04";
}

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.custom.controller.admin;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
import cn.iocoder.yudao.module.custom.service.CustomerMainService;
import cn.iocoder.yudao.module.custom.vo.CustomerMainPageReqVO;
import cn.iocoder.yudao.module.custom.vo.CustomerMainRespVO;
@ -17,6 +18,8 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
/**
@ -113,8 +116,22 @@ public class CustomerMainController {
@Operation(summary = "获得客户管理")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('base:customer-main:query')")
public CommonResult<Boolean> getCustomerMain(@RequestParam("id") String id) {
return success(true);
public CommonResult<CustomerMainRespVO> getCustomerMain(@RequestParam("id") String id) {
return success(customerMainService.getCustomerById(id));
}
/**
* 根据经办人所属企业查询经办人信息
* @author PQZ
* @date 16:15 2024/8/2
* @param deptCode 经办人所属企业code
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<java.lang.Boolean>
**/
@GetMapping("/getAttn")
@Operation(summary = "根据deptCode获取经办人信息")
public CommonResult<List<CustomerMain>> getCustomerMainByDeptCode(@RequestParam("deptCode") String deptCode) {
return success(customerMainService.getCustomerByDeptCode(deptCode));
}
}

View File

@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* 客户管理 Service 接口
*
@ -36,4 +38,22 @@ public interface CustomerMainService extends IService<CustomerMain> {
**/
void saveCustomer(CustomerMainSaveReqVO saveReqVO);
/**
* 根据客户id查询客户信息
* @author PQZ
* @date 15:12 2024/8/2
* @param id 客户id
* @return cn.iocoder.yudao.module.custom.vo.CustomerMainRespVO
**/
CustomerMainRespVO getCustomerById(String id);
/**
* 根据经办人所属企业查询经办人信息
* @author PQZ
* @date 16:15 2024/8/2
* @param deptCode 经办人所属企业code
* @return java.util.List<cn.iocoder.yudao.module.custom.vo.CustomerMainRespVO>
**/
List<CustomerMain> getCustomerByDeptCode(String deptCode);
}

View File

@ -38,6 +38,10 @@ public class CustomerItemServiceImpl extends ServiceImpl<CustomerItemMapper, Cus
this.remove(lambdaQueryWrapper);
/*2、保存扩展信息集合*/
itemList.forEach(item -> {
item.setId(null);
item.setCusId(cusId);
});
this.saveBatch(itemList);
}
}

View File

@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.custom.service.impl;
import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.custom.entity.CustomerItem;
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
import cn.iocoder.yudao.module.custom.mapper.CustomerMainMapper;
import cn.iocoder.yudao.module.custom.service.CustomerItemService;
@ -10,6 +12,7 @@ import cn.iocoder.yudao.module.custom.service.CustomerMainService;
import cn.iocoder.yudao.module.custom.vo.CustomerMainPageReqVO;
import cn.iocoder.yudao.module.custom.vo.CustomerMainRespVO;
import cn.iocoder.yudao.module.custom.vo.CustomerMainSaveReqVO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -18,6 +21,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.List;
import java.util.UUID;
import static cn.iocoder.yudao.common.BaseConstants.CUS_TYPE_CORP_ATTN;
/**
* 客户管理 Service 实现类
@ -44,7 +51,7 @@ public class CustomerMainServiceImpl extends ServiceImpl<CustomerMainMapper, Cus
**/
@Override
public IPage<CustomerMainRespVO> queryListPage(CustomerMainPageReqVO pageReqVO, Page<CustomerMainRespVO> page) {
return customerMainMapper.selectListPage(pageReqVO,page);
return customerMainMapper.selectListPage(pageReqVO, page);
}
/**
@ -58,19 +65,60 @@ public class CustomerMainServiceImpl extends ServiceImpl<CustomerMainMapper, Cus
@Override
@Transactional(rollbackFor = Exception.class)
public void saveCustomer(CustomerMainSaveReqVO saveReqVO) {
try{
try {
/*1、保存主表信息*/
CustomerMain main = JSONUtil.toBean(JSONUtil.parseObj(saveReqVO).toJSONString(0), CustomerMain.class);
//新增情况下非政企客户经办人deptCode设置为id方便分组查询
if (null == main.getId() && !CUS_TYPE_CORP_ATTN.equals(main.getTypeCode())) {
String id = String.valueOf(UUID.randomUUID());
main.setId(id);
main.setDeptCode(id);
}
this.saveOrUpdate(main);
/*2、保存扩展表信息*/
if (!saveReqVO.getItemList().isEmpty()){
customerItemService.saveCutomItem(saveReqVO.getId(),saveReqVO.getItemList());
if (!saveReqVO.getItemList().isEmpty()) {
customerItemService.saveCutomItem(main.getId(), saveReqVO.getItemList());
}
}catch (ServiceException e){
} catch (ServiceException e) {
log.error(e.getMessage());
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR);
}
}
/**
* 根据客户id查询客户信息
*
* @param id 客户id
* @return cn.iocoder.yudao.module.custom.vo.CustomerMainRespVO
* @author PQZ
* @date 15:12 2024/8/2
**/
@Override
public CustomerMainRespVO getCustomerById(String id) {
/*1、主表信息*/
CustomerMain main = this.getById(id);
/*2、扩展表信息*/
LambdaQueryWrapper<CustomerItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(BaseDO::getDeleted, 0).eq(CustomerItem::getCusId, id);
List<CustomerItem> itemList = customerItemService.list(lambdaQueryWrapper);
CustomerMainRespVO result = JSONUtil.toBean(JSONUtil.parseObj(main).toJSONString(0), CustomerMainRespVO.class);
result.setItemList(itemList);
return result;
}
/**
* 根据经办人所属企业查询经办人信息
*
* @param deptCode 经办人所属企业code
* @return java.util.List<cn.iocoder.yudao.module.custom.vo.CustomerMainRespVO>
* @author PQZ
* @date 16:15 2024/8/2
**/
@Override
public List<CustomerMain> getCustomerByDeptCode(String deptCode) {
LambdaQueryWrapper<CustomerMain> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(BaseDO::getDeleted, 0).eq(CustomerMain::getDeptCode, deptCode).eq(CustomerMain::getTypeCode, CUS_TYPE_CORP_ATTN);
return list(lambdaQueryWrapper);
}
}

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.custom.vo;
import cn.iocoder.yudao.module.custom.entity.CustomerItem;
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@ -12,18 +13,12 @@ import com.alibaba.excel.annotation.*;
@Data
@ExcelIgnoreUnannotated
public class CustomerMainRespVO extends CustomerMain {
/**客户管理子表id*/
private String itemId;
/**系统标识*/
private String systemCode;
/**用户等级*/
private String userLevel;
/**服务内容*/
private String serContent;
/**服务开始时间*/
private Date serTimeStart;
/**服务结束时间*/
private Date serTimeEnd;
/**大json*/
private String bigJson;
private String serContents;
/**车辆数量*/
private Integer carCount;
/**扩展信息*/
List<CustomerItem> itemList;
}

View File

@ -28,16 +28,10 @@
main.inviter AS inviter,
main.inviter_type AS inviterType,
main.status AS status,
item.id AS itemId,
item.system_code AS systemCode,
item.user_level AS userLevel,
item.ser_content AS serContent,
item.ser_time_start AS serTimeStart,
item.ser_time_end AS serTimeEnd,
item.big_json AS bigJson
group_concat(item.ser_content) AS serContents
FROM
base_customer_main main
LEFT JOIN base_customer_item item ON main.id = item.cus_id
LEFT JOIN base_customer_item item ON main.id = item.cus_id AND item.deleted = 0
<where>
main.deleted = 0
<if test="entity.cusName != null and entity.cusName != ''">
@ -50,6 +44,7 @@
AND item.system_code = #{entity.systemCode}
</if>
</where>
GROUP BY main.id
ORDER BY main.create_time DESC
</select>
</mapper>