项目修改

master
ljw 2025-12-18 15:13:27 +08:00
parent 60d6a56a40
commit 0af33c15ac
8 changed files with 242 additions and 57 deletions

View File

@ -4,6 +4,8 @@ import com.njzscloud.common.core.utils.R;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity; import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity;
import com.njzscloud.dispose.cst.project.pojo.param.ProjectQueryParam;
import com.njzscloud.dispose.cst.project.pojo.result.ProjectDetailResult;
import com.njzscloud.dispose.cst.project.service.ProjectService; import com.njzscloud.dispose.cst.project.service.ProjectService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -55,7 +57,7 @@ public class ProjectController {
* *
*/ */
@GetMapping("/detail") @GetMapping("/detail")
public R<ProjectEntity> detail(@RequestParam("id") Long id) { public R<ProjectDetailResult> detail(@RequestParam("id") Long id) {
return R.success(projectService.detail(id)); return R.success(projectService.detail(id));
} }
@ -63,8 +65,8 @@ public class ProjectController {
* *
*/ */
@GetMapping("/paging") @GetMapping("/paging")
public R<PageResult<ProjectEntity>> paging(PageParam pageParam, ProjectEntity projectEntity) { public R<PageResult<ProjectDetailResult>> paging(PageParam pageParam, ProjectQueryParam queryParam) {
return R.success(projectService.paging(pageParam, projectEntity)); return R.success(projectService.paging(pageParam, queryParam));
} }
} }

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity; import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity;
import com.njzscloud.dispose.cst.project.pojo.result.ProjectDetailResult;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -15,7 +16,7 @@ import org.apache.ibatis.annotations.Param;
@Mapper @Mapper
public interface ProjectMapper extends BaseMapper<ProjectEntity> { public interface ProjectMapper extends BaseMapper<ProjectEntity> {
Page<ProjectEntity> paging(Page<ProjectEntity> page, @Param("ew") QueryWrapper<ProjectEntity> ew); Page<ProjectDetailResult> paging(Page<ProjectEntity> page, @Param("ew") QueryWrapper<ProjectEntity> ew);
} }

View File

@ -1,10 +1,7 @@
package com.njzscloud.dispose.cst.project.pojo.entity; package com.njzscloud.dispose.cst.project.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.njzscloud.dispose.common.pojo.entity.BaseEntity; import com.njzscloud.dispose.common.pojo.entity.BaseEntity;
import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity;
import com.njzscloud.dispose.cst.org.pojo.entity.OrgEntity;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -38,48 +35,21 @@ public class ProjectEntity extends BaseEntity {
*/ */
private Long transCustomerId; private Long transCustomerId;
/**
*
*/
@TableField(exist = false)
private CustomerEntity transCustomerInfo;
/** /**
* Id * Id
*/ */
private Long transOrgId; private Long transOrgId;
@TableField(exist = false)
private String transOrgName;
/**
*
*/
@TableField(exist = false)
private OrgEntity transOrgInfo;
/** /**
* / Id * / Id
*/ */
private Long fringeCustomerId; private Long fringeCustomerId;
/**
* /
*/
@TableField(exist = false)
private CustomerEntity fringeCustomerInfo;
/** /**
* / Id * / Id
*/ */
private Long fringeOrgId; private Long fringeOrgId;
/**
* /
*/
@TableField(exist = false)
private OrgEntity fringeOrgInfo;
/** /**
* *
*/ */

View File

@ -0,0 +1,27 @@
package com.njzscloud.dispose.cst.project.pojo.param;
import lombok.Getter;
import lombok.Setter;
/**
*
*
* @author ljw
*/
@Getter
@Setter
public class ProjectQueryParam {
/**
* 0-->1-->
* 0
*/
private Boolean deleted;
/**
*
*/
private String projectName;
}

View File

@ -0,0 +1,175 @@
package com.njzscloud.dispose.cst.project.pojo.result;
import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity;
import com.njzscloud.dispose.cst.org.pojo.entity.OrgEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* /
*
* @author ljw
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class ProjectDetailResult {
/**
*
*/
private Long id;
/**
*
*/
private String projectName;
/**
*
*/
private String contractPicture;
/**
* Id
*/
private Long transCustomerId;
/**
*
*/
private CustomerEntity transCustomerInfo;
/**
* Id
*/
private Long transOrgId;
/**
*
*/
private String transOrgName;
/**
*
*/
private OrgEntity transOrgInfo;
/**
* / Id
*/
private Long fringeCustomerId;
/**
* /
*/
private CustomerEntity fringeCustomerInfo;
/**
* / Id
*/
private Long fringeOrgId;
/**
* /
*/
private OrgEntity fringeOrgInfo;
/**
*
*/
private String province;
/**
*
*/
private String city;
/**
*
*/
private String area;
/**
*
*/
private String town;
/**
*
*/
private String provinceName;
/**
*
*/
private String cityName;
/**
*
*/
private String areaName;
/**
*
*/
private String townName;
/**
*
*/
private String address;
/**
*
*/
private Double lng;
/**
*
*/
private Double lat;
/**
*
*/
private LocalDate contractStartDate;
/**
*
*/
private LocalDate contractEndDate;
/**
* Idsys_user.id
*/
private Long creatorId;
/**
* Id sys_user.id
*/
private Long modifierId;
/**
*
*/
private LocalDateTime createTime;
/**
*
*/
private LocalDateTime modifyTime;
/**
* 0-->1-->
*/
private Boolean deleted;
}

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity; import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity;
import com.njzscloud.dispose.cst.project.pojo.param.ProjectQueryParam;
import com.njzscloud.dispose.cst.project.pojo.result.ProjectDetailResult;
import java.util.List; import java.util.List;
@ -19,9 +21,9 @@ public interface ProjectService extends IService<ProjectEntity> {
void del(List<Long> ids); void del(List<Long> ids);
ProjectEntity detail(Long id); ProjectDetailResult detail(Long id);
PageResult<ProjectEntity> paging(PageParam pageParam, ProjectEntity projectEntity); PageResult<ProjectDetailResult> paging(PageParam pageParam, ProjectQueryParam queryParam);
} }

View File

@ -1,6 +1,8 @@
package com.njzscloud.dispose.cst.project.service.impl; package com.njzscloud.dispose.cst.project.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -14,6 +16,8 @@ import com.njzscloud.dispose.cst.org.pojo.entity.OrgEntity;
import com.njzscloud.dispose.cst.org.service.OrgService; import com.njzscloud.dispose.cst.org.service.OrgService;
import com.njzscloud.dispose.cst.project.mapper.ProjectMapper; import com.njzscloud.dispose.cst.project.mapper.ProjectMapper;
import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity; import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity;
import com.njzscloud.dispose.cst.project.pojo.param.ProjectQueryParam;
import com.njzscloud.dispose.cst.project.pojo.result.ProjectDetailResult;
import com.njzscloud.dispose.cst.project.service.ProjectService; import com.njzscloud.dispose.cst.project.service.ProjectService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -53,27 +57,32 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
} }
@Override @Override
public ProjectEntity detail(Long id) { public ProjectDetailResult detail(Long id) {
ProjectEntity detail = this.getById(id); ProjectEntity detail = this.getById(id);
if (detail != null) { if (detail == null) {
fillCustomerAndOrgInfo(Collections.singletonList(detail)); return null;
} }
return detail; ProjectDetailResult result = BeanUtil.copyProperties(detail, ProjectDetailResult.class);
fillCustomerAndOrgInfo(Collections.singletonList(result));
// 使用 BeanUtil 直接复制属性
return result;
} }
@Override @Override
public PageResult<ProjectEntity> paging(PageParam pageParam, ProjectEntity projectEntity) { public PageResult<ProjectDetailResult> paging(PageParam pageParam, ProjectQueryParam queryParam) {
QueryWrapper<ProjectEntity> ew = Wrappers.<ProjectEntity>query().eq("p.deleted", 0); if (queryParam == null) {
if (projectEntity != null) { queryParam = new ProjectQueryParam();
String projectName = projectEntity.getProjectName();
String transOrgName = projectEntity.getTransOrgName();
ew.like(projectName != null, "p.project_name", projectName).like(transOrgName != null, "o.org_name", transOrgName);
} }
String projectName = queryParam.getProjectName();
// 直接调用自定义分页 SQL项目名称 & 运输公司名称均为模糊查询) QueryWrapper<ProjectEntity> ew = Wrappers.<ProjectEntity>query()
.eq("p.deleted", Boolean.FALSE)
.like(StrUtil.isNotBlank(projectName), "p.project_name", projectName);
// 直接调用自定义分页 SQL
Page<ProjectEntity> page = pageParam.toPage(); Page<ProjectEntity> page = pageParam.toPage();
page.addOrder(OrderItem.desc("p.create_time")); page.addOrder(OrderItem.desc("p.create_time"));
Page<ProjectEntity> paging = baseMapper.paging(page, ew); Page<ProjectDetailResult> paging = baseMapper.paging(page, ew);
if (CollUtil.isNotEmpty(paging.getRecords())) { if (CollUtil.isNotEmpty(paging.getRecords())) {
fillCustomerAndOrgInfo(paging.getRecords()); fillCustomerAndOrgInfo(paging.getRecords());
@ -85,12 +94,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
/** /**
* / * /
*/ */
private void fillCustomerAndOrgInfo(List<ProjectEntity> records) { private void fillCustomerAndOrgInfo(List<ProjectDetailResult> records) {
// 收集所有需要的 ID // 收集所有需要的 ID
Set<Long> transCustomerIds = records.stream().map(ProjectEntity::getTransCustomerId).filter(Objects::nonNull).collect(Collectors.toSet()); Set<Long> transCustomerIds = records.stream().map(ProjectDetailResult::getTransCustomerId).filter(Objects::nonNull).collect(Collectors.toSet());
Set<Long> fringeCustomerIds = records.stream().map(ProjectEntity::getFringeCustomerId).filter(Objects::nonNull).collect(Collectors.toSet()); Set<Long> fringeCustomerIds = records.stream().map(ProjectDetailResult::getFringeCustomerId).filter(Objects::nonNull).collect(Collectors.toSet());
Set<Long> transOrgIds = records.stream().map(ProjectEntity::getTransOrgId).filter(Objects::nonNull).collect(Collectors.toSet()); Set<Long> transOrgIds = records.stream().map(ProjectDetailResult::getTransOrgId).filter(Objects::nonNull).collect(Collectors.toSet());
Set<Long> fringeOrgIds = records.stream().map(ProjectEntity::getFringeOrgId).filter(Objects::nonNull).collect(Collectors.toSet()); Set<Long> fringeOrgIds = records.stream().map(ProjectDetailResult::getFringeOrgId).filter(Objects::nonNull).collect(Collectors.toSet());
Set<Long> allCustomerIds = new HashSet<>(transCustomerIds); Set<Long> allCustomerIds = new HashSet<>(transCustomerIds);
allCustomerIds.addAll(fringeCustomerIds); allCustomerIds.addAll(fringeCustomerIds);
@ -107,7 +116,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
orgMap = orgService.listByIds(allOrgIds).stream().collect(Collectors.toMap(OrgEntity::getId, it -> it)); orgMap = orgService.listByIds(allOrgIds).stream().collect(Collectors.toMap(OrgEntity::getId, it -> it));
} }
for (ProjectEntity item : records) { for (ProjectDetailResult item : records) {
if (item.getTransCustomerId() != null) { if (item.getTransCustomerId() != null) {
item.setTransCustomerInfo(customerMap.get(item.getTransCustomerId())); item.setTransCustomerInfo(customerMap.get(item.getTransCustomerId()));
} }

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njzscloud.dispose.cst.project.mapper.ProjectMapper"> <mapper namespace="com.njzscloud.dispose.cst.project.mapper.ProjectMapper">
<resultMap id="ProjectResultMap" type="com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity"> <resultMap id="ProjectResultMap" type="com.njzscloud.dispose.cst.project.pojo.result.ProjectDetailResult">
<id column="id" property="id"/> <id column="id" property="id"/>
<result column="project_name" property="projectName"/> <result column="project_name" property="projectName"/>
<result column="contract_picture" property="contractPicture"/> <result column="contract_picture" property="contractPicture"/>
@ -43,11 +43,10 @@
WHERE p.id = #{id} WHERE p.id = #{id}
</select> </select>
<!-- 分页查询,支持项目名称模糊查询与运输公司名称模糊查询(直接表关联写法) --> <!-- 分页查询,支持项目名称模糊查询 -->
<select id="paging" resultMap="ProjectResultMap"> <select id="paging" resultMap="ProjectResultMap">
SELECT <include refid="Base_Column_List"/> SELECT <include refid="Base_Column_List"/>
FROM cst_project p FROM cst_project p
LEFT JOIN cst_org o ON o.id = p.trans_org_id AND o.deleted = 0
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment} ${ew.customSqlSegment}
</if> </if>