parent
448843f07a
commit
8f15ec2581
@ -0,0 +1,102 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import javax.servlet.http.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.CommonResult;
|
||||||
|
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjectfollowreport.SubjectFollowReportDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.subjectfollowreport.SubjectFollowReportConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.service.subjectfollowreport.SubjectFollowReportService;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 跟进报告管理")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/xxjj/subject-follow-report")
|
||||||
|
@Validated
|
||||||
|
public class SubjectFollowReportController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubjectFollowReportService subjectFollowReportService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建跟进报告管理")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-follow-report:create')")
|
||||||
|
public CommonResult<Long> createSubjectFollowReport(@Valid @RequestBody SubjectFollowReportCreateReqVO createReqVO) {
|
||||||
|
return success(subjectFollowReportService.createSubjectFollowReport(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新跟进报告管理")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-follow-report:update')")
|
||||||
|
public CommonResult<Boolean> updateSubjectFollowReport(@Valid @RequestBody SubjectFollowReportUpdateReqVO updateReqVO) {
|
||||||
|
subjectFollowReportService.updateSubjectFollowReport(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除跟进报告管理")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-follow-report:delete')")
|
||||||
|
public CommonResult<Boolean> deleteSubjectFollowReport(@RequestParam("id") Long id) {
|
||||||
|
subjectFollowReportService.deleteSubjectFollowReport(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得跟进报告管理")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-follow-report:query')")
|
||||||
|
public CommonResult<SubjectFollowReportRespVO> getSubjectFollowReport(@RequestParam("id") Long id) {
|
||||||
|
SubjectFollowReportDO subjectFollowReport = subjectFollowReportService.getSubjectFollowReport(id);
|
||||||
|
return success(SubjectFollowReportConvert.INSTANCE.convert(subjectFollowReport));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@Operation(summary = "获得跟进报告管理列表")
|
||||||
|
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-follow-report:query')")
|
||||||
|
public CommonResult<List<SubjectFollowReportRespVO>> getSubjectFollowReportList(@RequestParam("ids") Collection<Long> ids) {
|
||||||
|
List<SubjectFollowReportDO> list = subjectFollowReportService.getSubjectFollowReportList(ids);
|
||||||
|
return success(SubjectFollowReportConvert.INSTANCE.convertList(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得跟进报告管理分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-follow-report:query')")
|
||||||
|
public CommonResult<PageResult<SubjectFollowReportRespVO>> getSubjectFollowReportPage(@Valid SubjectFollowReportPageReqVO pageVO) {
|
||||||
|
PageResult<SubjectFollowReportDO> pageResult = subjectFollowReportService.getSubjectFollowReportPage(pageVO);
|
||||||
|
return success(SubjectFollowReportConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出跟进报告管理 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-follow-report:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportSubjectFollowReportExcel(@Valid SubjectFollowReportExportReqVO exportReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
List<SubjectFollowReportDO> list = subjectFollowReportService.getSubjectFollowReportList(exportReqVO);
|
||||||
|
// 导出 Excel
|
||||||
|
List<SubjectFollowReportExcelVO> datas = SubjectFollowReportConvert.INSTANCE.convertList02(list);
|
||||||
|
ExcelUtils.write(response, "跟进报告管理.xls", "数据", SubjectFollowReportExcelVO.class, datas);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 跟进报告管理创建 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SubjectFollowReportCreateReqVO extends SubjectFollowReportBaseVO {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 跟进报告管理 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SubjectFollowReportRespVO extends SubjectFollowReportBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11334")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 跟进报告管理更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SubjectFollowReportUpdateReqVO extends SubjectFollowReportBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11334")
|
||||||
|
@NotNull(message = "主键id不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import javax.servlet.http.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.CommonResult;
|
||||||
|
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjecttransfer.SubjectTransferDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.subjecttransfer.SubjectTransferConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.service.subjecttransfer.SubjectTransferService;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 主体负责人转移")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/xxjj/subject-transfer")
|
||||||
|
@Validated
|
||||||
|
public class SubjectTransferController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubjectTransferService subjectTransferService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建主体负责人转移")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-transfer:create')")
|
||||||
|
public CommonResult<Long> createSubjectTransfer(@Valid @RequestBody SubjectTransferCreateReqVO createReqVO) {
|
||||||
|
return success(subjectTransferService.createSubjectTransfer(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新主体负责人转移")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-transfer:update')")
|
||||||
|
public CommonResult<Boolean> updateSubjectTransfer(@Valid @RequestBody SubjectTransferUpdateReqVO updateReqVO) {
|
||||||
|
subjectTransferService.updateSubjectTransfer(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除主体负责人转移")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-transfer:delete')")
|
||||||
|
public CommonResult<Boolean> deleteSubjectTransfer(@RequestParam("id") Long id) {
|
||||||
|
subjectTransferService.deleteSubjectTransfer(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得主体负责人转移")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-transfer:query')")
|
||||||
|
public CommonResult<SubjectTransferRespVO> getSubjectTransfer(@RequestParam("id") Long id) {
|
||||||
|
SubjectTransferDO subjectTransfer = subjectTransferService.getSubjectTransfer(id);
|
||||||
|
return success(SubjectTransferConvert.INSTANCE.convert(subjectTransfer));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@Operation(summary = "获得主体负责人转移列表")
|
||||||
|
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-transfer:query')")
|
||||||
|
public CommonResult<List<SubjectTransferRespVO>> getSubjectTransferList(@RequestParam("ids") Collection<Long> ids) {
|
||||||
|
List<SubjectTransferDO> list = subjectTransferService.getSubjectTransferList(ids);
|
||||||
|
return success(SubjectTransferConvert.INSTANCE.convertList(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得主体负责人转移分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-transfer:query')")
|
||||||
|
public CommonResult<PageResult<SubjectTransferRespVO>> getSubjectTransferPage(@Valid SubjectTransferPageReqVO pageVO) {
|
||||||
|
PageResult<SubjectTransferDO> pageResult = subjectTransferService.getSubjectTransferPage(pageVO);
|
||||||
|
return success(SubjectTransferConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出主体负责人转移 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:subject-transfer:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportSubjectTransferExcel(@Valid SubjectTransferExportReqVO exportReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
List<SubjectTransferDO> list = subjectTransferService.getSubjectTransferList(exportReqVO);
|
||||||
|
// 导出 Excel
|
||||||
|
List<SubjectTransferExcelVO> datas = SubjectTransferConvert.INSTANCE.convertList02(list);
|
||||||
|
ExcelUtils.write(response, "主体负责人转移.xls", "数据", SubjectTransferExcelVO.class, datas);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 主体负责人转移创建 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SubjectTransferCreateReqVO extends SubjectTransferBaseVO {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 主体负责人转移 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SubjectTransferRespVO extends SubjectTransferBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6519")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 主体负责人转移更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SubjectTransferUpdateReqVO extends SubjectTransferBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6519")
|
||||||
|
@NotNull(message = "主键id不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.convert.subjectfollowreport;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjectfollowreport.SubjectFollowReportDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进报告管理 Convert
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface SubjectFollowReportConvert {
|
||||||
|
|
||||||
|
SubjectFollowReportConvert INSTANCE = Mappers.getMapper(SubjectFollowReportConvert.class);
|
||||||
|
|
||||||
|
SubjectFollowReportDO convert(SubjectFollowReportCreateReqVO bean);
|
||||||
|
|
||||||
|
SubjectFollowReportDO convert(SubjectFollowReportUpdateReqVO bean);
|
||||||
|
|
||||||
|
SubjectFollowReportRespVO convert(SubjectFollowReportDO bean);
|
||||||
|
|
||||||
|
List<SubjectFollowReportRespVO> convertList(List<SubjectFollowReportDO> list);
|
||||||
|
|
||||||
|
PageResult<SubjectFollowReportRespVO> convertPage(PageResult<SubjectFollowReportDO> page);
|
||||||
|
|
||||||
|
List<SubjectFollowReportExcelVO> convertList02(List<SubjectFollowReportDO> list);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.convert.subjecttransfer;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjecttransfer.SubjectTransferDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主体负责人转移 Convert
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface SubjectTransferConvert {
|
||||||
|
|
||||||
|
SubjectTransferConvert INSTANCE = Mappers.getMapper(SubjectTransferConvert.class);
|
||||||
|
|
||||||
|
SubjectTransferDO convert(SubjectTransferCreateReqVO bean);
|
||||||
|
|
||||||
|
SubjectTransferDO convert(SubjectTransferUpdateReqVO bean);
|
||||||
|
|
||||||
|
SubjectTransferRespVO convert(SubjectTransferDO bean);
|
||||||
|
|
||||||
|
List<SubjectTransferRespVO> convertList(List<SubjectTransferDO> list);
|
||||||
|
|
||||||
|
PageResult<SubjectTransferRespVO> convertPage(PageResult<SubjectTransferDO> page);
|
||||||
|
|
||||||
|
List<SubjectTransferExcelVO> convertList02(List<SubjectTransferDO> list);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.mysql.subjectfollowreport;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjectfollowreport.SubjectFollowReportDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进报告管理 Mapper
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface SubjectFollowReportMapper extends BaseMapperX<SubjectFollowReportDO> {
|
||||||
|
|
||||||
|
default PageResult<SubjectFollowReportDO> selectPage(SubjectFollowReportPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<SubjectFollowReportDO>()
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getReportType, reqVO.getReportType())
|
||||||
|
.betweenIfPresent(SubjectFollowReportDO::getReporTime, reqVO.getReporTime())
|
||||||
|
.betweenIfPresent(SubjectFollowReportDO::getFollowTime, reqVO.getFollowTime())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getBusinessId, reqVO.getBusinessId())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getAnnex, reqVO.getAnnex())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getDescription, reqVO.getDescription())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getReadOverUser, reqVO.getReadOverUser())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getMakeCopyUser, reqVO.getMakeCopyUser())
|
||||||
|
.betweenIfPresent(SubjectFollowReportDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(SubjectFollowReportDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<SubjectFollowReportDO> selectList(SubjectFollowReportExportReqVO reqVO) {
|
||||||
|
return selectList(new LambdaQueryWrapperX<SubjectFollowReportDO>()
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getReportType, reqVO.getReportType())
|
||||||
|
.betweenIfPresent(SubjectFollowReportDO::getReporTime, reqVO.getReporTime())
|
||||||
|
.betweenIfPresent(SubjectFollowReportDO::getFollowTime, reqVO.getFollowTime())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getBusinessId, reqVO.getBusinessId())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getAnnex, reqVO.getAnnex())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getDescription, reqVO.getDescription())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getReadOverUser, reqVO.getReadOverUser())
|
||||||
|
.eqIfPresent(SubjectFollowReportDO::getMakeCopyUser, reqVO.getMakeCopyUser())
|
||||||
|
.betweenIfPresent(SubjectFollowReportDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(SubjectFollowReportDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.mysql.subjecttransfer;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjecttransfer.SubjectTransferDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主体负责人转移 Mapper
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface SubjectTransferMapper extends BaseMapperX<SubjectTransferDO> {
|
||||||
|
|
||||||
|
default PageResult<SubjectTransferDO> selectPage(SubjectTransferPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<SubjectTransferDO>()
|
||||||
|
.eqIfPresent(SubjectTransferDO::getBusinessId, reqVO.getBusinessId())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getBusinessType, reqVO.getBusinessType())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getUserId1, reqVO.getUserId1())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getUserId2, reqVO.getUserId2())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getTransferType, reqVO.getTransferType())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getRemark, reqVO.getRemark())
|
||||||
|
.betweenIfPresent(SubjectTransferDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(SubjectTransferDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<SubjectTransferDO> selectList(SubjectTransferExportReqVO reqVO) {
|
||||||
|
return selectList(new LambdaQueryWrapperX<SubjectTransferDO>()
|
||||||
|
.eqIfPresent(SubjectTransferDO::getBusinessId, reqVO.getBusinessId())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getBusinessType, reqVO.getBusinessType())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getUserId1, reqVO.getUserId1())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getUserId2, reqVO.getUserId2())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getTransferType, reqVO.getTransferType())
|
||||||
|
.eqIfPresent(SubjectTransferDO::getRemark, reqVO.getRemark())
|
||||||
|
.betweenIfPresent(SubjectTransferDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(SubjectTransferDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.subjectfollowreport;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjectfollowreport.SubjectFollowReportDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进报告管理 Service 接口
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
public interface SubjectFollowReportService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建跟进报告管理
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createSubjectFollowReport(@Valid SubjectFollowReportCreateReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新跟进报告管理
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateSubjectFollowReport(@Valid SubjectFollowReportUpdateReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除跟进报告管理
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteSubjectFollowReport(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得跟进报告管理
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 跟进报告管理
|
||||||
|
*/
|
||||||
|
SubjectFollowReportDO getSubjectFollowReport(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得跟进报告管理列表
|
||||||
|
*
|
||||||
|
* @param ids 编号
|
||||||
|
* @return 跟进报告管理列表
|
||||||
|
*/
|
||||||
|
List<SubjectFollowReportDO> getSubjectFollowReportList(Collection<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得跟进报告管理分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 跟进报告管理分页
|
||||||
|
*/
|
||||||
|
PageResult<SubjectFollowReportDO> getSubjectFollowReportPage(SubjectFollowReportPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得跟进报告管理列表, 用于 Excel 导出
|
||||||
|
*
|
||||||
|
* @param exportReqVO 查询条件
|
||||||
|
* @return 跟进报告管理列表
|
||||||
|
*/
|
||||||
|
List<SubjectFollowReportDO> getSubjectFollowReportList(SubjectFollowReportExportReqVO exportReqVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.subjectfollowreport;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjectfollowreport.SubjectFollowReportDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.subjectfollowreport.SubjectFollowReportConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.subjectfollowreport.SubjectFollowReportMapper;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进报告管理 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class SubjectFollowReportServiceImpl implements SubjectFollowReportService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubjectFollowReportMapper subjectFollowReportMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createSubjectFollowReport(SubjectFollowReportCreateReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
SubjectFollowReportDO subjectFollowReport = SubjectFollowReportConvert.INSTANCE.convert(createReqVO);
|
||||||
|
subjectFollowReportMapper.insert(subjectFollowReport);
|
||||||
|
// 返回
|
||||||
|
return subjectFollowReport.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateSubjectFollowReport(SubjectFollowReportUpdateReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateSubjectFollowReportExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
SubjectFollowReportDO updateObj = SubjectFollowReportConvert.INSTANCE.convert(updateReqVO);
|
||||||
|
subjectFollowReportMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteSubjectFollowReport(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validateSubjectFollowReportExists(id);
|
||||||
|
// 删除
|
||||||
|
subjectFollowReportMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateSubjectFollowReportExists(Long id) {
|
||||||
|
if (subjectFollowReportMapper.selectById(id) == null) {
|
||||||
|
//throw exception(SUBJECT_FOLLOW_REPORT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubjectFollowReportDO getSubjectFollowReport(Long id) {
|
||||||
|
return subjectFollowReportMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SubjectFollowReportDO> getSubjectFollowReportList(Collection<Long> ids) {
|
||||||
|
return subjectFollowReportMapper.selectBatchIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<SubjectFollowReportDO> getSubjectFollowReportPage(SubjectFollowReportPageReqVO pageReqVO) {
|
||||||
|
return subjectFollowReportMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SubjectFollowReportDO> getSubjectFollowReportList(SubjectFollowReportExportReqVO exportReqVO) {
|
||||||
|
return subjectFollowReportMapper.selectList(exportReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.subjecttransfer;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjecttransfer.SubjectTransferDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主体负责人转移 Service 接口
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
public interface SubjectTransferService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建主体负责人转移
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createSubjectTransfer(@Valid SubjectTransferCreateReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新主体负责人转移
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateSubjectTransfer(@Valid SubjectTransferUpdateReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除主体负责人转移
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteSubjectTransfer(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得主体负责人转移
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 主体负责人转移
|
||||||
|
*/
|
||||||
|
SubjectTransferDO getSubjectTransfer(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得主体负责人转移列表
|
||||||
|
*
|
||||||
|
* @param ids 编号
|
||||||
|
* @return 主体负责人转移列表
|
||||||
|
*/
|
||||||
|
List<SubjectTransferDO> getSubjectTransferList(Collection<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得主体负责人转移分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 主体负责人转移分页
|
||||||
|
*/
|
||||||
|
PageResult<SubjectTransferDO> getSubjectTransferPage(SubjectTransferPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得主体负责人转移列表, 用于 Excel 导出
|
||||||
|
*
|
||||||
|
* @param exportReqVO 查询条件
|
||||||
|
* @return 主体负责人转移列表
|
||||||
|
*/
|
||||||
|
List<SubjectTransferDO> getSubjectTransferList(SubjectTransferExportReqVO exportReqVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.subjecttransfer;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjecttransfer.SubjectTransferDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.subjecttransfer.SubjectTransferConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.subjecttransfer.SubjectTransferMapper;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主体负责人转移 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class SubjectTransferServiceImpl implements SubjectTransferService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubjectTransferMapper subjectTransferMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createSubjectTransfer(SubjectTransferCreateReqVO createReqVO) {
|
||||||
|
String[] businessIds = createReqVO.getBusinessIds().split(",");
|
||||||
|
for (int i=0; i< businessIds.length; i++){
|
||||||
|
SubjectTransferDO subjectTransfer = SubjectTransferConvert.INSTANCE.convert(createReqVO);
|
||||||
|
subjectTransfer.setBusinessId(Long.parseLong(businessIds[i]));
|
||||||
|
subjectTransfer.setUserId1(Long.parseLong(createReqVO.getUserId1s().split(",")[i]));
|
||||||
|
subjectTransfer.setTransferType((StringUtils.join(createReqVO.getTransferTypeArr(), ",")));
|
||||||
|
subjectTransferMapper.insert(subjectTransfer);
|
||||||
|
}
|
||||||
|
return 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateSubjectTransfer(SubjectTransferUpdateReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateSubjectTransferExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
SubjectTransferDO updateObj = SubjectTransferConvert.INSTANCE.convert(updateReqVO);
|
||||||
|
subjectTransferMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteSubjectTransfer(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validateSubjectTransferExists(id);
|
||||||
|
// 删除
|
||||||
|
subjectTransferMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateSubjectTransferExists(Long id) {
|
||||||
|
if (subjectTransferMapper.selectById(id) == null) {
|
||||||
|
throw exception(SUBJECT_TRANSFER_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubjectTransferDO getSubjectTransfer(Long id) {
|
||||||
|
return subjectTransferMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SubjectTransferDO> getSubjectTransferList(Collection<Long> ids) {
|
||||||
|
return subjectTransferMapper.selectBatchIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<SubjectTransferDO> getSubjectTransferPage(SubjectTransferPageReqVO pageReqVO) {
|
||||||
|
return subjectTransferMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SubjectTransferDO> getSubjectTransferList(SubjectTransferExportReqVO exportReqVO) {
|
||||||
|
return subjectTransferMapper.selectList(exportReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,215 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.subjectfollowreport;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjectfollowreport.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjectfollowreport.SubjectFollowReportDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.subjectfollowreport.SubjectFollowReportMapper;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.hutool.core.util.RandomUtil.*;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link SubjectFollowReportServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Import(SubjectFollowReportServiceImpl.class)
|
||||||
|
public class SubjectFollowReportServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubjectFollowReportServiceImpl subjectFollowReportService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubjectFollowReportMapper subjectFollowReportMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateSubjectFollowReport_success() {
|
||||||
|
// 准备参数
|
||||||
|
SubjectFollowReportCreateReqVO reqVO = randomPojo(SubjectFollowReportCreateReqVO.class);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long subjectFollowReportId = subjectFollowReportService.createSubjectFollowReport(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(subjectFollowReportId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
SubjectFollowReportDO subjectFollowReport = subjectFollowReportMapper.selectById(subjectFollowReportId);
|
||||||
|
assertPojoEquals(reqVO, subjectFollowReport);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSubjectFollowReport_success() {
|
||||||
|
// mock 数据
|
||||||
|
SubjectFollowReportDO dbSubjectFollowReport = randomPojo(SubjectFollowReportDO.class);
|
||||||
|
subjectFollowReportMapper.insert(dbSubjectFollowReport);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
SubjectFollowReportUpdateReqVO reqVO = randomPojo(SubjectFollowReportUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbSubjectFollowReport.getId()); // 设置更新的 ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
subjectFollowReportService.updateSubjectFollowReport(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
SubjectFollowReportDO subjectFollowReport = subjectFollowReportMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, subjectFollowReport);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSubjectFollowReport_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
SubjectFollowReportUpdateReqVO reqVO = randomPojo(SubjectFollowReportUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> subjectFollowReportService.updateSubjectFollowReport(reqVO), SUBJECT_FOLLOW_REPORT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteSubjectFollowReport_success() {
|
||||||
|
// mock 数据
|
||||||
|
SubjectFollowReportDO dbSubjectFollowReport = randomPojo(SubjectFollowReportDO.class);
|
||||||
|
subjectFollowReportMapper.insert(dbSubjectFollowReport);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbSubjectFollowReport.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
subjectFollowReportService.deleteSubjectFollowReport(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(subjectFollowReportMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteSubjectFollowReport_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> subjectFollowReportService.deleteSubjectFollowReport(id), SUBJECT_FOLLOW_REPORT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetSubjectFollowReportPage() {
|
||||||
|
// mock 数据
|
||||||
|
SubjectFollowReportDO dbSubjectFollowReport = randomPojo(SubjectFollowReportDO.class, o -> { // 等会查询到
|
||||||
|
o.setReportType(null);
|
||||||
|
o.setReporTime(null);
|
||||||
|
o.setFollowTime(null);
|
||||||
|
o.setBusinessId(null);
|
||||||
|
o.setAnnex(null);
|
||||||
|
o.setDescription(null);
|
||||||
|
o.setReadOverUser(null);
|
||||||
|
o.setMakeCopyUser(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
subjectFollowReportMapper.insert(dbSubjectFollowReport);
|
||||||
|
// 测试 reportType 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setReportType(null)));
|
||||||
|
// 测试 reporTime 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setReporTime(null)));
|
||||||
|
// 测试 followTime 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setFollowTime(null)));
|
||||||
|
// 测试 businessId 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setBusinessId(null)));
|
||||||
|
// 测试 annex 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setAnnex(null)));
|
||||||
|
// 测试 description 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setDescription(null)));
|
||||||
|
// 测试 readOverUser 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setReadOverUser(null)));
|
||||||
|
// 测试 makeCopyUser 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setMakeCopyUser(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
SubjectFollowReportPageReqVO reqVO = new SubjectFollowReportPageReqVO();
|
||||||
|
reqVO.setReportType(null);
|
||||||
|
reqVO.setReporTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setFollowTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setBusinessId(null);
|
||||||
|
reqVO.setAnnex(null);
|
||||||
|
reqVO.setDescription(null);
|
||||||
|
reqVO.setReadOverUser(null);
|
||||||
|
reqVO.setMakeCopyUser(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<SubjectFollowReportDO> pageResult = subjectFollowReportService.getSubjectFollowReportPage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbSubjectFollowReport, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetSubjectFollowReportList() {
|
||||||
|
// mock 数据
|
||||||
|
SubjectFollowReportDO dbSubjectFollowReport = randomPojo(SubjectFollowReportDO.class, o -> { // 等会查询到
|
||||||
|
o.setReportType(null);
|
||||||
|
o.setReporTime(null);
|
||||||
|
o.setFollowTime(null);
|
||||||
|
o.setBusinessId(null);
|
||||||
|
o.setAnnex(null);
|
||||||
|
o.setDescription(null);
|
||||||
|
o.setReadOverUser(null);
|
||||||
|
o.setMakeCopyUser(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
subjectFollowReportMapper.insert(dbSubjectFollowReport);
|
||||||
|
// 测试 reportType 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setReportType(null)));
|
||||||
|
// 测试 reporTime 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setReporTime(null)));
|
||||||
|
// 测试 followTime 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setFollowTime(null)));
|
||||||
|
// 测试 businessId 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setBusinessId(null)));
|
||||||
|
// 测试 annex 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setAnnex(null)));
|
||||||
|
// 测试 description 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setDescription(null)));
|
||||||
|
// 测试 readOverUser 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setReadOverUser(null)));
|
||||||
|
// 测试 makeCopyUser 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setMakeCopyUser(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
subjectFollowReportMapper.insert(cloneIgnoreId(dbSubjectFollowReport, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
SubjectFollowReportExportReqVO reqVO = new SubjectFollowReportExportReqVO();
|
||||||
|
reqVO.setReportType(null);
|
||||||
|
reqVO.setReporTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setFollowTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setBusinessId(null);
|
||||||
|
reqVO.setAnnex(null);
|
||||||
|
reqVO.setDescription(null);
|
||||||
|
reqVO.setReadOverUser(null);
|
||||||
|
reqVO.setMakeCopyUser(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<SubjectFollowReportDO> list = subjectFollowReportService.getSubjectFollowReportList(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, list.size());
|
||||||
|
assertPojoEquals(dbSubjectFollowReport, list.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,199 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.subjecttransfer;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.subjecttransfer.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.subjecttransfer.SubjectTransferDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.subjecttransfer.SubjectTransferMapper;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.hutool.core.util.RandomUtil.*;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link SubjectTransferServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Import(SubjectTransferServiceImpl.class)
|
||||||
|
public class SubjectTransferServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubjectTransferServiceImpl subjectTransferService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SubjectTransferMapper subjectTransferMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateSubjectTransfer_success() {
|
||||||
|
// 准备参数
|
||||||
|
SubjectTransferCreateReqVO reqVO = randomPojo(SubjectTransferCreateReqVO.class);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long subjectTransferId = subjectTransferService.createSubjectTransfer(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(subjectTransferId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
SubjectTransferDO subjectTransfer = subjectTransferMapper.selectById(subjectTransferId);
|
||||||
|
assertPojoEquals(reqVO, subjectTransfer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSubjectTransfer_success() {
|
||||||
|
// mock 数据
|
||||||
|
SubjectTransferDO dbSubjectTransfer = randomPojo(SubjectTransferDO.class);
|
||||||
|
subjectTransferMapper.insert(dbSubjectTransfer);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
SubjectTransferUpdateReqVO reqVO = randomPojo(SubjectTransferUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbSubjectTransfer.getId()); // 设置更新的 ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
subjectTransferService.updateSubjectTransfer(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
SubjectTransferDO subjectTransfer = subjectTransferMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, subjectTransfer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSubjectTransfer_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
SubjectTransferUpdateReqVO reqVO = randomPojo(SubjectTransferUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> subjectTransferService.updateSubjectTransfer(reqVO), SUBJECT_TRANSFER_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteSubjectTransfer_success() {
|
||||||
|
// mock 数据
|
||||||
|
SubjectTransferDO dbSubjectTransfer = randomPojo(SubjectTransferDO.class);
|
||||||
|
subjectTransferMapper.insert(dbSubjectTransfer);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbSubjectTransfer.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
subjectTransferService.deleteSubjectTransfer(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(subjectTransferMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteSubjectTransfer_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> subjectTransferService.deleteSubjectTransfer(id), SUBJECT_TRANSFER_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetSubjectTransferPage() {
|
||||||
|
// mock 数据
|
||||||
|
SubjectTransferDO dbSubjectTransfer = randomPojo(SubjectTransferDO.class, o -> { // 等会查询到
|
||||||
|
o.setBusinessId(null);
|
||||||
|
o.setBusinessType(null);
|
||||||
|
o.setUserId1(null);
|
||||||
|
o.setUserId2(null);
|
||||||
|
o.setTransferType(null);
|
||||||
|
o.setRemark(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
subjectTransferMapper.insert(dbSubjectTransfer);
|
||||||
|
// 测试 businessId 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setBusinessId(null)));
|
||||||
|
// 测试 businessType 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setBusinessType(null)));
|
||||||
|
// 测试 userId1 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setUserId1(null)));
|
||||||
|
// 测试 userId2 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setUserId2(null)));
|
||||||
|
// 测试 transferType 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setTransferType(null)));
|
||||||
|
// 测试 remark 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setRemark(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
SubjectTransferPageReqVO reqVO = new SubjectTransferPageReqVO();
|
||||||
|
reqVO.setBusinessId(null);
|
||||||
|
reqVO.setBusinessType(null);
|
||||||
|
reqVO.setUserId1(null);
|
||||||
|
reqVO.setUserId2(null);
|
||||||
|
reqVO.setTransferType(null);
|
||||||
|
reqVO.setRemark(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<SubjectTransferDO> pageResult = subjectTransferService.getSubjectTransferPage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbSubjectTransfer, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetSubjectTransferList() {
|
||||||
|
// mock 数据
|
||||||
|
SubjectTransferDO dbSubjectTransfer = randomPojo(SubjectTransferDO.class, o -> { // 等会查询到
|
||||||
|
o.setBusinessId(null);
|
||||||
|
o.setBusinessType(null);
|
||||||
|
o.setUserId1(null);
|
||||||
|
o.setUserId2(null);
|
||||||
|
o.setTransferType(null);
|
||||||
|
o.setRemark(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
subjectTransferMapper.insert(dbSubjectTransfer);
|
||||||
|
// 测试 businessId 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setBusinessId(null)));
|
||||||
|
// 测试 businessType 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setBusinessType(null)));
|
||||||
|
// 测试 userId1 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setUserId1(null)));
|
||||||
|
// 测试 userId2 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setUserId2(null)));
|
||||||
|
// 测试 transferType 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setTransferType(null)));
|
||||||
|
// 测试 remark 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setRemark(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
subjectTransferMapper.insert(cloneIgnoreId(dbSubjectTransfer, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
SubjectTransferExportReqVO reqVO = new SubjectTransferExportReqVO();
|
||||||
|
reqVO.setBusinessId(null);
|
||||||
|
reqVO.setBusinessType(null);
|
||||||
|
reqVO.setUserId1(null);
|
||||||
|
reqVO.setUserId2(null);
|
||||||
|
reqVO.setTransferType(null);
|
||||||
|
reqVO.setRemark(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<SubjectTransferDO> list = subjectTransferService.getSubjectTransferList(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, list.size());
|
||||||
|
assertPojoEquals(dbSubjectTransfer, list.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface SubjectFollowManagementVO {
|
||||||
|
id: number
|
||||||
|
businessId: number
|
||||||
|
businessType: string
|
||||||
|
title: string
|
||||||
|
idCard: string
|
||||||
|
startTime: Date
|
||||||
|
endTime: Date
|
||||||
|
responsible: string
|
||||||
|
partake: string
|
||||||
|
mark: string
|
||||||
|
urgency: string
|
||||||
|
remindType: string
|
||||||
|
description: string
|
||||||
|
annex: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询主体跟进管理列表
|
||||||
|
export const getSubjectFollowManagementPage = async (params) => {
|
||||||
|
return await request.get({ url: `/xxjj/subject-follow-management/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询主体跟进管理详情
|
||||||
|
export const getSubjectFollowManagement = async (id: number) => {
|
||||||
|
return await request.get({ url: `/xxjj/subject-follow-management/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增主体跟进管理
|
||||||
|
export const createSubjectFollowManagement = async (data: SubjectFollowManagementVO) => {
|
||||||
|
return await request.post({ url: `/xxjj/subject-follow-management/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改主体跟进管理
|
||||||
|
export const updateSubjectFollowManagement = async (data: SubjectFollowManagementVO) => {
|
||||||
|
return await request.put({ url: `/xxjj/subject-follow-management/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除主体跟进管理
|
||||||
|
export const deleteSubjectFollowManagement = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/xxjj/subject-follow-management/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出主体跟进管理 Excel
|
||||||
|
export const exportSubjectFollowManagement = async (params) => {
|
||||||
|
return await request.download({ url: `/xxjj/subject-follow-management/export-excel`, params })
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface SubjectFollowReportVO {
|
||||||
|
id: number
|
||||||
|
reportType: string
|
||||||
|
reporTime: Date
|
||||||
|
followTime: Date
|
||||||
|
businessId: number
|
||||||
|
annex: string
|
||||||
|
description: string
|
||||||
|
readOverUser: string
|
||||||
|
makeCopyUser: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询跟进报告管理列表
|
||||||
|
export const getSubjectFollowReportPage = async (params) => {
|
||||||
|
return await request.get({ url: `/xxjj/subject-follow-report/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询跟进报告管理详情
|
||||||
|
export const getSubjectFollowReport = async (id: number) => {
|
||||||
|
return await request.get({ url: `/xxjj/subject-follow-report/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增跟进报告管理
|
||||||
|
export const createSubjectFollowReport = async (data: SubjectFollowReportVO) => {
|
||||||
|
return await request.post({ url: `/xxjj/subject-follow-report/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改跟进报告管理
|
||||||
|
export const updateSubjectFollowReport = async (data: SubjectFollowReportVO) => {
|
||||||
|
return await request.put({ url: `/xxjj/subject-follow-report/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除跟进报告管理
|
||||||
|
export const deleteSubjectFollowReport = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/xxjj/subject-follow-report/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出跟进报告管理 Excel
|
||||||
|
export const exportSubjectFollowReport = async (params) => {
|
||||||
|
return await request.download({ url: `/xxjj/subject-follow-report/export-excel`, params })
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface SubjectTransferVO {
|
||||||
|
id: number
|
||||||
|
businessId: number
|
||||||
|
businessType: string
|
||||||
|
userId1: number
|
||||||
|
userId2: number
|
||||||
|
transferType: string
|
||||||
|
remark: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询主体负责人转移列表
|
||||||
|
export const getSubjectTransferPage = async (params) => {
|
||||||
|
return await request.get({ url: `/xxjj/subject-transfer/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询主体负责人转移详情
|
||||||
|
export const getSubjectTransfer = async (id: number) => {
|
||||||
|
return await request.get({ url: `/xxjj/subject-transfer/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增主体负责人转移
|
||||||
|
export const createSubjectTransfer = async (data: SubjectTransferVO) => {
|
||||||
|
return await request.post({ url: `/xxjj/subject-transfer/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改主体负责人转移
|
||||||
|
export const updateSubjectTransfer = async (data: SubjectTransferVO) => {
|
||||||
|
return await request.put({ url: `/xxjj/subject-transfer/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除主体负责人转移
|
||||||
|
export const deleteSubjectTransfer = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/xxjj/subject-transfer/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出主体负责人转移 Excel
|
||||||
|
export const exportSubjectTransfer = async (params) => {
|
||||||
|
return await request.download({ url: `/xxjj/subject-transfer/export-excel`, params })
|
||||||
|
}
|
@ -0,0 +1,386 @@
|
|||||||
|
<template>
|
||||||
|
<ContentWrap title="客户跟进">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="任务标题" prop="name">
|
||||||
|
<el-input v-model="queryParams.title" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery"
|
||||||
|
class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="客户名称" prop="name">
|
||||||
|
<el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery"
|
||||||
|
class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="客户分类" prop="calssify">
|
||||||
|
<el-select v-model="queryParams.calssify" placeholder="请选择">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.CUSTOMER_CALSSIFY)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="信用等级" prop="customerStarrating">
|
||||||
|
<el-select v-model="queryParams.customerStarrating" placeholder="请选择">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.CUSTOMER_STARRATING)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <el-form-item label="企业性质" prop="enterpriseNature">
|
||||||
|
<el-select v-model="queryParams.enterpriseNature" placeholder="请选择">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.enterpriseNature)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item> -->
|
||||||
|
<!-- <el-form-item label="创建时间" prop="createTime">
|
||||||
|
<el-date-picker v-model="queryParams.createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
|
||||||
|
start-placeholder="开始日期" end-placeholder="结束日期"
|
||||||
|
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item>
|
||||||
|
<el-button @click="handleQuery">
|
||||||
|
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="resetQuery">
|
||||||
|
<Icon icon="ep:refresh" class="mr-5px" /> 重置
|
||||||
|
</el-button>
|
||||||
|
<el-button type="primary" link :icon="Filter" @click="doShowDrawerFilterA(true)">高级筛选</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['xxjj:subject-basic:create']">
|
||||||
|
<Icon icon="ep:plus" class="mr-5px" /> 新建任务
|
||||||
|
</el-button>
|
||||||
|
<!-- <el-button type="default" plain @click="openForm('create')" v-hasPermi="['xxjj:subject-basic:create']">
|
||||||
|
<Icon icon="ep:plus" class="mr-5px" /> 新建任务
|
||||||
|
</el-button>
|
||||||
|
<el-button type="default" plain @click="openForm('create')" v-hasPermi="['xxjj:subject-basic:create']">
|
||||||
|
<Icon icon="ep:refresh" class="mr-5px" /> 转移客户
|
||||||
|
</el-button> -->
|
||||||
|
<el-button type="default" plain @click="handleExport" :loading="exportLoading"
|
||||||
|
v-hasPermi="['xxjj:subject-basic:export']">
|
||||||
|
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||||
|
</el-button>
|
||||||
|
<el-button type="default" plain @click="handleExport" :loading="exportLoading"
|
||||||
|
v-hasPermi="['xxjj:subject-basic:export']">
|
||||||
|
<Icon icon="ep:upload" class="mr-5px" /> 导入
|
||||||
|
</el-button>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="margin: 10px 0px;">
|
||||||
|
<el-table v-loading="loading" :data="list" :border="true" :stripe="true" :show-overflow-tooltip="true"
|
||||||
|
class="xy-table">
|
||||||
|
<el-table-column fixed type="selection" width="40px" />
|
||||||
|
<el-table-column label="任务标题" align="center" sortable prop="title" width="150px" />
|
||||||
|
<el-table-column fixed label="客户名称" prop="name" width="250px">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-image style="width: 46px; height: 46px" :src="scope.row.logo" fit="fill" />
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="18">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">{{ scope.row.name }}</el-col>
|
||||||
|
<el-col :span="24"><dict-tag :type="DICT_TYPE.customer_type" :value="scope.row.reservedFields1" /></el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="上次跟进时间" align="center" prop="title" width="150px" />
|
||||||
|
<el-table-column label="紧急程度" align="center" prop="urgency" width="150px" />
|
||||||
|
|
||||||
|
|
||||||
|
<el-table-column label="负责人" align="center" prop="belongingPeopleName" width="150px" />
|
||||||
|
<el-table-column label="客户分类" prop="calssify" width="120px">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.CUSTOMER_CALSSIFY" :value="scope.row.calssify" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="企业性质" prop="enterpriseNature" width="120px">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.enterpriseNature" :value="scope.row.enterpriseNature" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="行业分类" prop="industryClassify" width="120px">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.industryClassify" :value="scope.row.industryClassify" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="信用等级" prop="customerStarrating" width="150px">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-rate v-model="scope.row.customerStarrating" :disabled="true"/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="业务进度" prop="industrySchedule" width="120px">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.industrySchedule" :value="scope.row.industrySchedule" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
|
||||||
|
<el-table-column label="开始时间" align="center" prop="startTime" width="150px">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ dayjs(scope.row.startTime).format('YYYY-MM-DD') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="结束时间" align="center" prop="endTime" width="150px">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ dayjs(scope.row.endTime).format('YYYY-MM-DD') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="创建时间" align="center" prop="createTime" width="150px">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">{{ scope.row.creatorName }}</el-col>
|
||||||
|
<el-col :span="24" style="font-size: 12px;color: #999999;">
|
||||||
|
{{ dayjs(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="更新时间" align="center" prop="updateTime" width="150px">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">{{ scope.row.updaterName }}</el-col>
|
||||||
|
<el-col :span="24" style="font-size: 12px;color: #999999;">
|
||||||
|
{{ dayjs(scope.row.updateTime).format('YYYY-MM-DD HH:mm:ss') }}
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" width="200px" fixed="right">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button link type="primary" @click="openForm('update', scope.row.id)"
|
||||||
|
v-hasPermi="['xxjj:subject-basic:update']">
|
||||||
|
详情
|
||||||
|
</el-button>
|
||||||
|
<el-button link type="primary" @click="openForm2('update', scope.row.id)"
|
||||||
|
v-hasPermi="['xxjj:subject-basic:update']">
|
||||||
|
报告
|
||||||
|
</el-button>
|
||||||
|
<el-button link type="danger" @click="handleDelete(scope.row.id)"
|
||||||
|
v-hasPermi="['xxjj:subject-basic:delete']">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList" />
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</ContentWrap>
|
||||||
|
<SubjectFollowManagementForm ref="formRef" @success="getList" />
|
||||||
|
<SubjectFollowReportForm ref="subjectFollowReportFormRef" @success="getList" />
|
||||||
|
<DrawerFilter :isShow="isShowDrawerFilterA" @do-close="doCloseDrawerFilterA" @do-search="doDrawerFilterASearch" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts" name="SubjectBasic">
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
|
import { Filter } from '@element-plus/icons-vue'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
import { DICT_TYPE, getStrDictOptions, getIntDictOptions } from '@/utils/dict'
|
||||||
|
import { dateFormatter } from '@/utils/formatTime'
|
||||||
|
import download from '@/utils/download'
|
||||||
|
import * as SubjectFollowManagementApi from '@/api/xxjj/SubjectFollowManagement'
|
||||||
|
import SubjectFollowManagementForm from './SubjectFollowManagementForm.vue'
|
||||||
|
import SubjectFollowReportForm from './SubjectFollowReportForm.vue'
|
||||||
|
import DrawerFilter from './src/DrawerFilter.vue'
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
|
const loading = ref(true) // 列表的加载中
|
||||||
|
const total = ref(0) // 列表的总页数
|
||||||
|
const list = ref([]) // 列表的数据
|
||||||
|
let queryParams : any = reactive({
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
businessType: null,
|
||||||
|
calssify: null,
|
||||||
|
name: null,
|
||||||
|
logo: null,
|
||||||
|
enterpriseNature: null,
|
||||||
|
industryClassify: null,
|
||||||
|
customerSource: null,
|
||||||
|
customerStarrating: null,
|
||||||
|
industrySchedule: null,
|
||||||
|
belongingPeople: null,
|
||||||
|
city: null,
|
||||||
|
country: null,
|
||||||
|
address: null,
|
||||||
|
phone: null,
|
||||||
|
companyFax: null,
|
||||||
|
companyHttp: null,
|
||||||
|
companyProfile: null,
|
||||||
|
customerStatus: null,
|
||||||
|
socialInformationCodeCertificate: null,
|
||||||
|
registerAddress: null,
|
||||||
|
informationCode: null,
|
||||||
|
operateStart: null,
|
||||||
|
operateEnd: null,
|
||||||
|
registerCapital: null,
|
||||||
|
businessScope: null,
|
||||||
|
proofPaidCapital: null,
|
||||||
|
assetCertificate: null,
|
||||||
|
assetCertificateMortgage: null,
|
||||||
|
otherQualifications: null,
|
||||||
|
collaborationStart: null,
|
||||||
|
collaborationEnd: null,
|
||||||
|
demandVolumeDown: null,
|
||||||
|
demandVolumeUpper: null,
|
||||||
|
fundLimit: null,
|
||||||
|
businessHours: null,
|
||||||
|
businessStart: null,
|
||||||
|
businessEnd: null,
|
||||||
|
allowableUnloadingStart: null,
|
||||||
|
allowableUnloadingEnd: null,
|
||||||
|
unloading: null,
|
||||||
|
unloadingEfficiency: null,
|
||||||
|
allowableShipmentStart: null,
|
||||||
|
allowableShipmentEnd: null,
|
||||||
|
shipment: null,
|
||||||
|
shipmentEffciency: null,
|
||||||
|
paymentMethod: null,
|
||||||
|
accountName: null,
|
||||||
|
bankAccount: null,
|
||||||
|
bankDeposit: null,
|
||||||
|
depositArea: null,
|
||||||
|
bankBranch: null,
|
||||||
|
companyTaxNumber: null,
|
||||||
|
enterpriseName: null,
|
||||||
|
workAddress: null,
|
||||||
|
collaborationMethod: null,
|
||||||
|
settlementMethod: null,
|
||||||
|
accountPeriod: null,
|
||||||
|
underpaymentMethod: null,
|
||||||
|
applyForUnderpaymentRatio: null,
|
||||||
|
marginMethod: null,
|
||||||
|
applyForMarginRatio: null,
|
||||||
|
overdueInterestRate: null,
|
||||||
|
applyForOverdueRatio: null,
|
||||||
|
reservedFields1: null,
|
||||||
|
reservedFields2: null,
|
||||||
|
reservedFields3: null,
|
||||||
|
reservedFields4: null,
|
||||||
|
reservedFields5: null,
|
||||||
|
reservedFields6: null,
|
||||||
|
creditRating: null,
|
||||||
|
autoCreditRating: null,
|
||||||
|
accountsReceivableUpper: null,
|
||||||
|
orderQuantityDown: null,
|
||||||
|
orderQuantityUpper: null,
|
||||||
|
accountsReceivableOverdue: null,
|
||||||
|
taxPaymentCertificate: null,
|
||||||
|
createTime: []
|
||||||
|
})
|
||||||
|
const queryFormRef = ref() // 搜索的表单
|
||||||
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
|
||||||
|
/** 查询列表 */
|
||||||
|
const getList = async () => {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
queryParams.businessType = 1;
|
||||||
|
const data = await SubjectFollowManagementApi.getSubjectFollowManagementPage(queryParams)
|
||||||
|
list.value = data.list
|
||||||
|
total.value = data.total
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.pageNo = 1
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
const resetQuery = () => {
|
||||||
|
queryFormRef.value.resetFields()
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 添加/修改操作 */
|
||||||
|
const formRef = ref()
|
||||||
|
const openForm = (type: string, id?: number) => {
|
||||||
|
formRef.value.open(type, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const subjectFollowReportFormRef = ref()
|
||||||
|
const openForm2 = (type: string, id?: number) => {
|
||||||
|
subjectFollowReportFormRef.value.open(type, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
const handleDelete = async (id: number) => {
|
||||||
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
await SubjectFollowManagementApi.deleteSubjectFollowManagement(id)
|
||||||
|
message.success(t('common.delSuccess'))
|
||||||
|
// 刷新列表
|
||||||
|
await getList()
|
||||||
|
} catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
const handleExport = async () => {
|
||||||
|
try {
|
||||||
|
// 导出的二次确认
|
||||||
|
await message.exportConfirm()
|
||||||
|
// 发起导出
|
||||||
|
exportLoading.value = true
|
||||||
|
const data = await SubjectFollowManagementApi.exportSubjectFollowManagement(queryParams)
|
||||||
|
download.excel(data, '基础业务信息表(客户,供应商,服务商主体).xls')
|
||||||
|
} catch {
|
||||||
|
} finally {
|
||||||
|
exportLoading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 高级筛选
|
||||||
|
let isShowDrawerFilterA = ref(false);
|
||||||
|
const doShowDrawerFilterA = (isshow: boolean) => {
|
||||||
|
isShowDrawerFilterA.value = isshow;
|
||||||
|
}
|
||||||
|
const doCloseDrawerFilterA = (isshow: boolean) => {
|
||||||
|
isShowDrawerFilterA.value = isshow;
|
||||||
|
}
|
||||||
|
const doDrawerFilterASearch = (params: Object) => {
|
||||||
|
queryParams = params;
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
/** 初始化 **/
|
||||||
|
onMounted(() => {
|
||||||
|
getList()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.xy-table thead {
|
||||||
|
color: #1D2129;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xy-table thead th.el-table__cell {
|
||||||
|
background-color: #F7F8FA;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xy-table.is-scrolling-left th.el-table-fixed-column--left {
|
||||||
|
background-color: #F7F8FA;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,247 @@
|
|||||||
|
<template>
|
||||||
|
<el-drawer :model-value="props.isShow" :with-header="true" :show-close="false" class="xy-drawer" @closed="doClose"
|
||||||
|
size="40%">
|
||||||
|
<template #header style="background-color: red;">
|
||||||
|
<div class="xy-header-l">
|
||||||
|
<el-icon>
|
||||||
|
<Filter />
|
||||||
|
</el-icon>高级筛选
|
||||||
|
</div>
|
||||||
|
<div class="xy-header-r">
|
||||||
|
<el-button type="" link :icon="ArrowRightBold" @click="doClose">收起</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #default>
|
||||||
|
<el-form :model="queryParams" ref="queryFormRef">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="客户名称" prop="name">
|
||||||
|
<el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery"
|
||||||
|
style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="客户状态" prop="customerStatus">
|
||||||
|
<el-select v-model="queryParams.customerStatus" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.CUSTOMER_STATUS)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="客户分类" prop="calssify">
|
||||||
|
<el-select v-model="queryParams.calssify" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.CUSTOMER_CALSSIFY)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="客户类型" prop="reservedFields1">
|
||||||
|
<el-select v-model="queryParams.reservedFields1" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.customer_type)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="业务进度" prop="industrySchedule">
|
||||||
|
<el-select v-model="queryParams.industrySchedule" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.industrySchedule)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="行业分类" prop="industryClassify">
|
||||||
|
<el-select v-model="queryParams.industryClassify" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.industryClassify)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="客户来源" prop="customerSource">
|
||||||
|
<el-select v-model="queryParams.customerSource" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.customerSource)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="账户类型" prop="reservedFields2">
|
||||||
|
<el-select v-model="queryParams.reservedFields2" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.account_type)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="企业性质" prop="enterpriseNature">
|
||||||
|
<el-select v-model="queryParams.enterpriseNature" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.enterpriseNature)" :key="dict.value"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="创建时间" prop="createTime">
|
||||||
|
<el-date-picker v-model="queryParams.createTime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
type="daterange" start-placeholder="开始日期" end-placeholder="结束日期"
|
||||||
|
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px"
|
||||||
|
style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
<template #footer>
|
||||||
|
<div class="xy-footer">
|
||||||
|
<el-button type="primary" :icon="Search" @click="handleQuery">查询</el-button>
|
||||||
|
<el-button :icon="RefreshLeft">重置</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts" name="DrawerFilter">
|
||||||
|
import { Filter, ArrowRightBold, Search, RefreshLeft } from '@element-plus/icons-vue'
|
||||||
|
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
isShow: Boolean
|
||||||
|
})
|
||||||
|
|
||||||
|
const emit = defineEmits(['doClose'])
|
||||||
|
|
||||||
|
// 关闭
|
||||||
|
const doClose = () => {
|
||||||
|
emit('doClose', false)
|
||||||
|
}
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
const handleQuery = () => {
|
||||||
|
emit('doSearch', queryParams)
|
||||||
|
}
|
||||||
|
const queryParams = reactive({
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
businessType: null,
|
||||||
|
calssify: null,
|
||||||
|
name: null,
|
||||||
|
logo: null,
|
||||||
|
enterpriseNature: null,
|
||||||
|
industryClassify: null,
|
||||||
|
customerSource: null,
|
||||||
|
customerStarrating: null,
|
||||||
|
industrySchedule: null,
|
||||||
|
belongingPeople: null,
|
||||||
|
city: null,
|
||||||
|
country: null,
|
||||||
|
address: null,
|
||||||
|
phone: null,
|
||||||
|
companyFax: null,
|
||||||
|
companyHttp: null,
|
||||||
|
companyProfile: null,
|
||||||
|
customerStatus: null,
|
||||||
|
socialInformationCodeCertificate: null,
|
||||||
|
registerAddress: null,
|
||||||
|
informationCode: null,
|
||||||
|
operateStart: null,
|
||||||
|
operateEnd: null,
|
||||||
|
registerCapital: null,
|
||||||
|
businessScope: null,
|
||||||
|
proofPaidCapital: null,
|
||||||
|
assetCertificate: null,
|
||||||
|
assetCertificateMortgage: null,
|
||||||
|
otherQualifications: null,
|
||||||
|
collaborationStart: null,
|
||||||
|
collaborationEnd: null,
|
||||||
|
demandVolumeDown: null,
|
||||||
|
demandVolumeUpper: null,
|
||||||
|
fundLimit: null,
|
||||||
|
businessHours: null,
|
||||||
|
businessStart: null,
|
||||||
|
businessEnd: null,
|
||||||
|
allowableUnloadingStart: null,
|
||||||
|
allowableUnloadingEnd: null,
|
||||||
|
unloading: null,
|
||||||
|
unloadingEfficiency: null,
|
||||||
|
allowableShipmentStart: null,
|
||||||
|
allowableShipmentEnd: null,
|
||||||
|
shipment: null,
|
||||||
|
shipmentEffciency: null,
|
||||||
|
paymentMethod: null,
|
||||||
|
accountName: null,
|
||||||
|
bankAccount: null,
|
||||||
|
bankDeposit: null,
|
||||||
|
depositArea: null,
|
||||||
|
bankBranch: null,
|
||||||
|
companyTaxNumber: null,
|
||||||
|
enterpriseName: null,
|
||||||
|
workAddress: null,
|
||||||
|
collaborationMethod: null,
|
||||||
|
settlementMethod: null,
|
||||||
|
accountPeriod: null,
|
||||||
|
underpaymentMethod: null,
|
||||||
|
applyForUnderpaymentRatio: null,
|
||||||
|
marginMethod: null,
|
||||||
|
applyForMarginRatio: null,
|
||||||
|
overdueInterestRate: null,
|
||||||
|
applyForOverdueRatio: null,
|
||||||
|
reservedFields1: null,
|
||||||
|
reservedFields2: null,
|
||||||
|
reservedFields3: null,
|
||||||
|
reservedFields4: null,
|
||||||
|
reservedFields5: null,
|
||||||
|
reservedFields6: null,
|
||||||
|
creditRating: null,
|
||||||
|
autoCreditRating: null,
|
||||||
|
accountsReceivableUpper: null,
|
||||||
|
orderQuantityDown: null,
|
||||||
|
orderQuantityUpper: null,
|
||||||
|
accountsReceivableOverdue: null,
|
||||||
|
taxPaymentCertificate: null,
|
||||||
|
createTime: []
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.xy-drawer {
|
||||||
|
.el-drawer__header {
|
||||||
|
margin: 0px;
|
||||||
|
border-bottom: solid 1px #D9D9D9;
|
||||||
|
padding: 10px 0px;
|
||||||
|
height: 50px;
|
||||||
|
|
||||||
|
.xy-header-l {
|
||||||
|
padding: 0px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xy-header-r {
|
||||||
|
padding: 0px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-drawer__footer {
|
||||||
|
border-top: solid 1px #D9D9D9;
|
||||||
|
padding: 0px;
|
||||||
|
|
||||||
|
.xy-footer {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
Loading…
Reference in new issue