Quellcode durchsuchen

feat: 竞争对手中项目情况新增、列表查询

zhaomuran vor 4 Monaten
Ursprung
Commit
b8a63cbe3a

+ 39 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkCompetitorProjectController.java

@@ -0,0 +1,39 @@
+package com.wx.blink.backend.controller;
+
+import com.wx.blink.backend.domain.dto.BlinkCompetitorProjectDTO;
+import com.wx.blink.backend.domain.qry.BlinkCompetitorProjectQry;
+import com.wx.blink.backend.service.IBlinkCompetitorProjectService;
+import com.wx.blink.base.common.annoation.NoNeedLogin;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@RestController
+@Tag(name = "竞争对手-项目情况")
+public class BlinkCompetitorProjectController {
+
+    @Resource
+    private IBlinkCompetitorProjectService projectService;
+
+    @Operation(summary = "新增项目情况")
+    @PostMapping("/supports/competitor/project/create")
+    @NoNeedLogin
+    public ResponseDTO<String> supportsCompetitorProjectCreate(@RequestBody @Valid BlinkCompetitorProjectDTO dto) {
+        return projectService.supportsCompetitorProjectCreate(dto);
+    }
+
+    @Operation(summary = "分页查询项目情况列表")
+    @PostMapping("/supports/competitor/project/queryPage")
+    @NoNeedLogin
+    public ResponseDTO<PageResult<BlinkCompetitorProjectDTO>> supportsCompetitorProjectQueryPage(@RequestBody @Valid BlinkCompetitorProjectQry qry) {
+        return projectService.supportsCompetitorProjectQueryPage(qry);
+    }
+
+}

+ 75 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCompetitorProjectDO.java

@@ -0,0 +1,75 @@
+package com.wx.blink.backend.domain.dataobject;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.wx.blink.base.common.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("blink_competitor_project_situation")
+public class BlinkCompetitorProjectDO extends BaseEntity {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 竞争对手ID
+     */
+    private Long competitorId;
+
+    /**
+     * 项目ID
+     */
+    private String projectId;
+
+    /**
+     * 项目报价
+     */
+    private String projectQuote;
+
+    /**
+     * 合同金额(元)
+     */
+    private String contractAmount;
+
+    /**
+     * 补充协议金额(元)
+     */
+    private String additionalAmount;
+
+    /**
+     * 合同总金额(元)
+     */
+    private String contractTotalAmount;
+
+    /**
+     * 项目类型
+     */
+    private String projectType;
+
+    /**
+     * 产品类型
+     */
+    private String productType;
+
+    /**
+     * 项目来源
+     */
+    private String projectSource;
+
+    /**
+     * 归属营销人员
+     */
+    private String marketer;
+
+
+}

+ 80 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkCompetitorProjectDTO.java

@@ -0,0 +1,80 @@
+package com.wx.blink.backend.domain.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.wx.blink.base.common.domain.BaseEntity;
+import com.wx.blink.base.common.json.deserializer.DictValueVoDeserializer;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class BlinkCompetitorProjectDTO extends BaseEntity {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 竞争对手ID
+     */
+    private Long competitorId;
+
+    /**
+     * 项目ID
+     */
+    private String projectId;
+
+    /**
+     * 项目报价
+     */
+    private String projectQuote;
+
+    /**
+     * 合同金额(元)
+     */
+    private String contractAmount;
+    private BigDecimal contractAmounts;
+
+    /**
+     * 补充协议金额(元)
+     */
+    private String additionalAmount;
+    private BigDecimal additionalAmounts;
+
+    /**
+     * 合同总金额(元)
+     */
+    private String contractTotalAmount;
+    private BigDecimal contractTotalAmounts;
+
+    /**
+     * 项目类型
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    private String projectType;
+
+    /**
+     * 产品类型
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    private String productType;
+
+    /**
+     * 项目来源
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    private String projectSource;
+
+    /**
+     * 归属营销人员
+     */
+    private String marketer;
+
+
+}

+ 19 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/qry/BlinkCompetitorProjectQry.java

@@ -0,0 +1,19 @@
+package com.wx.blink.backend.domain.qry;
+
+import com.wx.blink.base.common.domain.PageParam;
+import lombok.Data;
+
+@Data
+public class BlinkCompetitorProjectQry extends PageParam {
+
+    /**
+     * 竞争对手ID
+     */
+    private Long competitorId;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+}

+ 74 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCompetitorProjectServiceImpl.java

@@ -0,0 +1,74 @@
+package com.wx.blink.backend.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wx.blink.backend.domain.dataobject.BlinkCompetitorProjectDO;
+import com.wx.blink.backend.domain.dto.BlinkCompetitorProjectDTO;
+import com.wx.blink.backend.domain.qry.BlinkCompetitorProjectQry;
+import com.wx.blink.backend.objectmapper.BlinkCompetitorProjectMapper;
+import com.wx.blink.backend.repository.BlinkCompetitorProjectRepository;
+import com.wx.blink.backend.service.IBlinkCompetitorProjectService;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkEntityUtil;
+import com.wx.blink.base.common.util.BlinkPageUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.DecimalFormat;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+public class BlinkCompetitorProjectServiceImpl extends ServiceImpl<BlinkCompetitorProjectRepository, BlinkCompetitorProjectDO> implements IBlinkCompetitorProjectService {
+
+    @Resource
+    private BlinkCompetitorProjectRepository repository;
+    @Resource
+    private BlinkCompetitorProjectMapper mapper;
+
+    /**
+     * 新增项目情况
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    public ResponseDTO<String> supportsCompetitorProjectCreate(BlinkCompetitorProjectDTO dto) {
+        // 验证企业资质是否重复
+        BlinkCompetitorProjectDO projectDO = repository.queryByProjectName(dto.getProjectName(), null, Boolean.FALSE);
+        if (Objects.nonNull(projectDO)) {
+            return ResponseDTO.dataErrorParam("资质名称重复!请检查");
+        }
+        // 生成DO
+        BlinkCompetitorProjectDO competitorProjectDO = new BlinkCompetitorProjectDO();
+        mapper.toBlinkCompetitorProjectDO(dto, competitorProjectDO);
+        DecimalFormat df = new DecimalFormat("#,##0.00");
+        // 设置合同金额
+        competitorProjectDO.setContractAmount(df.format(dto.getContractAmounts()));
+        // 设置补充协议金额
+        competitorProjectDO.setAdditionalAmount(df.format(dto.getAdditionalAmounts()));
+        // 设置合同总金额
+        competitorProjectDO.setContractTotalAmount(df.format(dto.getContractTotalAmounts()));
+        // 创建人赋值
+        BlinkEntityUtil.setCreateInfo(competitorProjectDO);
+        // 执行新增
+        this.save(competitorProjectDO);
+        return ResponseDTO.ok();
+    }
+
+    /**
+     * 分页查询项目情况列表
+     *
+     * @param qry
+     * @return
+     */
+    @Override
+    public ResponseDTO<PageResult<BlinkCompetitorProjectDTO>> supportsCompetitorProjectQueryPage(BlinkCompetitorProjectQry qry) {
+        Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
+        List<BlinkCompetitorProjectDTO> projectDTOS = repository.supportsCompetitorProjectQueryPage(page, qry);
+        PageResult<BlinkCompetitorProjectDTO> pageResult = BlinkPageUtil.convert2PageResult(page, projectDTOS);
+        return ResponseDTO.ok(pageResult);
+    }
+
+}

+ 28 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkCompetitorProjectMapper.java

@@ -0,0 +1,28 @@
+package com.wx.blink.backend.objectmapper;
+
+import com.wx.blink.backend.domain.dataobject.BlinkCompetitorProjectDO;
+import com.wx.blink.backend.domain.dto.BlinkCompetitorProjectDTO;
+import com.wx.blink.base.common.util.BlinkStringUtil;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+
+@Mapper(componentModel = "spring", imports = {BlinkStringUtil.class})
+public interface BlinkCompetitorProjectMapper {
+
+    /**
+     * 竞争对手-项目情况主数据dto转do
+     *
+     * @param dto
+     * @return
+     */
+    void toBlinkCompetitorProjectDO(BlinkCompetitorProjectDTO dto, @MappingTarget BlinkCompetitorProjectDO competitorDO);
+
+    /**
+     * 竞争对手-项目情况主数据do转dto
+     *
+     * @param dto
+     * @return
+     */
+    void toBlinkCompetitorProjectDTO(BlinkCompetitorProjectDO competitorDO, @MappingTarget BlinkCompetitorProjectDTO dto);
+
+}

+ 36 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCompetitorProjectRepository.java

@@ -0,0 +1,36 @@
+package com.wx.blink.backend.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.wx.blink.backend.domain.dataobject.BlinkCompetitorProjectDO;
+import com.wx.blink.backend.domain.dto.BlinkCompetitorProjectDTO;
+import com.wx.blink.backend.domain.qry.BlinkCompetitorProjectQry;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BlinkCompetitorProjectRepository extends BaseMapper<BlinkCompetitorProjectDO> {
+
+    /**
+     * 验证项目名称是否重复
+     *
+     * @param projectName
+     * @param id
+     * @param deletedFlag
+     * @return
+     */
+    BlinkCompetitorProjectDO queryByProjectName(@Param("projectName") String projectName, @Param("id") Long id, @Param("deletedFlag") Boolean deletedFlag);
+
+
+    /**
+     * 分页查询项目情况列表
+     *
+     * @param page
+     * @param qry
+     * @return
+     */
+    List<BlinkCompetitorProjectDTO> supportsCompetitorProjectQueryPage(Page<?> page, @Param("query") BlinkCompetitorProjectQry qry);
+
+}

+ 26 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCompetitorProjectService.java

@@ -0,0 +1,26 @@
+package com.wx.blink.backend.service;
+
+import com.wx.blink.backend.domain.dto.BlinkCompetitorProjectDTO;
+import com.wx.blink.backend.domain.qry.BlinkCompetitorProjectQry;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.ResponseDTO;
+
+public interface IBlinkCompetitorProjectService {
+
+    /**
+     * 新增项目情况
+     *
+     * @param dto
+     * @return
+     */
+    ResponseDTO<String> supportsCompetitorProjectCreate(BlinkCompetitorProjectDTO dto);
+
+    /**
+     * 分页查询项目情况列表
+     *
+     * @param qry
+     * @return
+     */
+    ResponseDTO<PageResult<BlinkCompetitorProjectDTO>> supportsCompetitorProjectQueryPage(BlinkCompetitorProjectQry qry);
+
+}

+ 31 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkCompetitorProjectRepositoryMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.wx.blink.backend.repository.BlinkCompetitorProjectRepository">
+    <!--    查询单个企业资质-->
+    <select id="queryByProjectName" resultType="com.wx.blink.backend.domain.dataobject.BlinkCompetitorProjectDO">
+        select *
+        from blink_competitor_project_situation
+        where deleted_flag = #{deletedFlag}
+        <if test="projectName != null and projectName != ''">
+            AND project_name = #{projectName}
+        </if>
+        <if test="id != null">
+            AND id = #{id}
+        </if>
+    </select>
+
+    <!--    分页查询企业资质列表-->
+    <select id="supportsCompetitorProjectQueryPage" resultType="com.wx.blink.backend.domain.dto.BlinkCompetitorProjectDTO">
+        select *
+        from blink_competitor_project_situation
+        where deleted_flag = '0'
+        <if test="query.projectName != null and query.qualificationprojectName != ''">
+            AND project_name LIKE concat('%', #{query.projectName}, '%')
+        </if>
+        <if test="query.competitorId != null">
+            AND competitor_id = #{query.competitorId}
+        </if>
+        order by create_time desc
+    </select>
+
+</mapper>