Browse Source

功能调整

wangqiang 1 year ago
parent
commit
caddf4944b
18 changed files with 661 additions and 3 deletions
  1. 15 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/controller/CwProjectRecordsController.java
  2. 6 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/domain/CwProjectRecords.java
  3. 23 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/domain/EngineeringTree.java
  4. 37 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/domain/PartialCustomerInfo.java
  5. 27 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/domain/ProjectEngineeringInfo.java
  6. 3 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/CwProjectRecordsMapper.java
  7. 23 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/EngineeringTreeMapper.java
  8. 15 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/PartialCustomerInfoMapper.java
  9. 18 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/CwProjectRecordsMapper.xml
  10. 38 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/EngineeringTreeMapper.xml
  11. 4 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/PartialCustomerInfoMapper.xml
  12. 257 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/ProjectMapper.xml
  13. 68 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/CwProjectRecordsService.java
  14. 71 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/EngineeringTreeService.java
  15. 18 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/PartialCustomerInfoService.java
  16. 10 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/dto/CwProjectRecordsDTO.java
  17. 1 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/service/CwWorkClientService.java
  18. 27 0
      jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/controller/UserController.java

+ 15 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/controller/CwProjectRecordsController.java

@@ -12,6 +12,7 @@ import com.jeeplus.finance.invoice.util.EasyPoiUtil;
 import com.jeeplus.finance.projectRecords.domain.CwProjectPlan;
 import com.jeeplus.finance.projectRecords.domain.CwProjectPlanDetails;
 import com.jeeplus.finance.projectRecords.domain.CwProjectRecords;
+import com.jeeplus.finance.projectRecords.domain.PartialCustomerInfo;
 import com.jeeplus.finance.projectRecords.service.CwProjectRecordsService;
 import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
 import com.jeeplus.finance.projectRecords.service.dto.CwTreeUserDto;
@@ -48,6 +49,20 @@ public class CwProjectRecordsController {
     private CwProjectRecordsService cwProjectRecordsService;
 
     /**
+     * 查询部分客户信息数据列表
+     * @param customerInfo
+     * @param page
+     * @return
+     */
+    @ApiLog("查询部分客户信息数据列表")
+    @GetMapping("partialCustomerInfoList")
+    public ResponseEntity<IPage<PartialCustomerInfo>> partialCustomerInfoList(PartialCustomerInfo customerInfo, Page<PartialCustomerInfo> page) throws Exception {
+        IPage<PartialCustomerInfo> result = new Page<PartialCustomerInfo>();
+        result = cwProjectRecordsService.partialCustomerInfoList (page,customerInfo);
+        return ResponseEntity.ok (result);
+    }
+
+    /**
      * 查询财务项目信息列表
      * @return
      */

+ 6 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/domain/CwProjectRecords.java

@@ -18,6 +18,12 @@ public class CwProjectRecords extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 工程类型
+     */
+    private String engineeringType;
+
+
     //项目等级
     private String projectLevel;
 

+ 23 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/domain/EngineeringTree.java

@@ -0,0 +1,23 @@
+package com.jeeplus.finance.projectRecords.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 工程类型树形实体类
+ * @author 王强
+ * @version 1.0
+ * @date 2024-03-11 14:08
+ */
+@Data
+public class EngineeringTree extends BaseEntity {
+
+    private String value; //工程类型名称
+    private String label;  //工程类型Id
+    private List<EngineeringTree> children;
+
+
+}

+ 37 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/domain/PartialCustomerInfo.java

@@ -0,0 +1,37 @@
+package com.jeeplus.finance.projectRecords.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 客户部分信息
+ * @author 王强
+ * @version 1.0
+ * @date 2024-03-12 10:14
+ */
+@Data
+@TableName("cw_project_records_customer")
+public class PartialCustomerInfo extends BaseEntity {
+
+    //客户id
+    private String clientId;
+    //客户名称
+    private String name;
+    //统一社会信用代码
+    @TableField(exist = false)
+    private String uscCode;
+    //创建人名称
+    @TableField(exist = false)
+    private String createUserName;
+    //联系人名称
+    private String clientName;
+    //联系方式1
+    private String contactFirst;
+    //联系方式2
+    private String contactSecond;
+    //项目id
+    private String recordsId;
+
+}

+ 27 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/domain/ProjectEngineeringInfo.java

@@ -0,0 +1,27 @@
+package com.jeeplus.finance.projectRecords.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.TreeEntity;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 工程类型实体类
+ * @author 王强
+ * @version 1.0
+ * @date 2024-03-11 14:10
+ */
+@Data
+@TableName("project_engineering_info")
+public class ProjectEngineeringInfo extends TreeEntity<ProjectEngineeringInfo> {
+
+
+    private String engineeringName; //名称
+    private String indexNum;        //序号
+    private String parentIds;		// 所有父ID
+    private String parentId;		// 父ID
+    private String companyId;   //公司id
+    private String parentName;
+
+}

+ 3 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/CwProjectRecordsMapper.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jeeplus.finance.projectRecords.domain.CwProjectPlanDetails;
 import com.jeeplus.finance.projectRecords.domain.CwProjectRecords;
+import com.jeeplus.finance.projectRecords.domain.PartialCustomerInfo;
 import com.jeeplus.finance.projectRecords.service.dto.CwProjectClientInfoDTO;
 import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
 import com.jeeplus.finance.projectRecords.service.dto.CwTreeUserDto;
@@ -33,6 +34,8 @@ public interface CwProjectRecordsMapper extends BaseMapper<CwProjectRecords> {
      */
     // @InterceptorIgnore(tenantLine = "true")
     IPage<CwProjectRecordsDTO> findList(Page<CwProjectRecordsDTO> page, @Param(Constants.WRAPPER) QueryWrapper<CwProjectRecords> queryWrapper);
+
+    IPage<PartialCustomerInfo> partialCustomerInfoList(Page<PartialCustomerInfo> page, @Param(Constants.WRAPPER) QueryWrapper<PartialCustomerInfo> queryWrapper);
     /**
      * 查询项目数据集合,和上面findList是一样的,目的是跳过findList接口的数据规则(比如仅部门可见、仅自己可见之类的)
      */

+ 23 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/EngineeringTreeMapper.java

@@ -0,0 +1,23 @@
+package com.jeeplus.finance.projectRecords.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.finance.projectRecords.domain.EngineeringTree;
+import com.jeeplus.finance.projectRecords.domain.ProjectEngineeringInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2024-03-11 14:18
+ */
+@Mapper
+@InterceptorIgnore(tenantLine = "true")
+public interface EngineeringTreeMapper extends BaseMapper<EngineeringTree> {
+
+    List<ProjectEngineeringInfo> findList(ProjectEngineeringInfo info);
+}

+ 15 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/PartialCustomerInfoMapper.java

@@ -0,0 +1,15 @@
+package com.jeeplus.finance.projectRecords.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.finance.projectRecords.domain.PartialCustomerInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2024-03-12 13:39
+ */
+@Mapper
+public interface PartialCustomerInfoMapper extends BaseMapper<PartialCustomerInfo> {
+}

+ 18 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/CwProjectRecordsMapper.xml

@@ -49,6 +49,7 @@
         <collection property="workAttachmentDtoList" ofType="com.jeeplus.sys.service.dto.WorkAttachmentInfoDTO" column="id" select="getFileList"></collection>
         <collection property="cwProjectClientContactDTOList" ofType="com.jeeplus.finance.projectRecords.service.dto.CwProjectClientContactDTO" column="id" select="getContact"></collection>
         <collection property="cwProjectMembersDTOList" ofType="com.jeeplus.finance.projectRecords.service.dto.CwProjectMembersDTO" column="id" select="getMembers"></collection>
+        <collection property="cwProjectConstructionList" ofType="com.jeeplus.finance.projectRecords.domain.PartialCustomerInfo" column="id" select="getConstructionList"></collection>
 
     </resultMap>
 
@@ -94,7 +95,8 @@
         a.project_type,
         a.project_level,
         a.project_start_time,
-        a.project_end_time
+        a.project_end_time,
+        a.engineering_type
     </sql>
     <sql id="File_Column_List">
         wa.id,
@@ -219,6 +221,12 @@
         from cw_project_members cw_pm
         where cw_pm.project_id = #{id} and cw_pm.del_flag = '0'
     </select>
+    <select id="getConstructionList" resultType="com.jeeplus.finance.projectRecords.domain.PartialCustomerInfo">
+        select
+        name,client_name,contact_first,contact_second
+        from cw_project_records_customer cu
+        where cu.records_id = #{id} and cu.del_flag = '0'
+    </select>
 
 
     <!--<select id="findList" resultMap="BaseResultMap">
@@ -648,5 +656,14 @@
         left join cw_project_plan_details a on cw_pp.id = a.plan_id
         where a.del_flag = '0'
     </select>
+    <select id="partialCustomerInfoList"
+            resultType="com.jeeplus.finance.projectRecords.domain.PartialCustomerInfo">
+        SELECT a.id as clientId, a.name,a.usc_code,su.`name` as createUserName,cli.name as clientName,cli.contact_first,cli.contact_second
+        FROM cw_work_client_base a
+        LEFT JOIN sys_user su on a.create_by_id = su.id and su.del_flag = 0
+        LEFT JOIN cw_work_client_contact cli on a.id = cli.client_id and cli.del_flag = 0
+        ${ew.customSqlSegment}
+        ORDER BY a.create_time DESC
+    </select>
 
 </mapper>

+ 38 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/EngineeringTreeMapper.xml

@@ -0,0 +1,38 @@
+<?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.jeeplus.finance.projectRecords.mapper.EngineeringTreeMapper">
+
+    <sql id="engineeringColumns">
+        a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.parent_id AS "parentId",
+		a.engineering_name AS "engineeringName",
+		a.parent_ids AS "parentIds",
+		a.company_id AS "companyId",
+		a.index_num AS "indexNum"
+    </sql>
+
+    <select id="findList" resultType="com.jeeplus.finance.projectRecords.domain.ProjectEngineeringInfo">
+        SELECT
+        <include refid="engineeringColumns"/>
+        FROM project_engineering_info a
+        <where>
+            a.del_flag = 0
+            <if test="engineeringName!=null and engineeringName != ''">
+                and a.engineering_name like concat('%',#{engineeringName},'%')
+            </if>
+            <if test="parentIds!=null and parentIds != ''">
+                and a.parent_ids like concat('%',#{parentIds},'%')
+            </if>
+            <if test="indexNum != null and indexNum!=0">
+                and a.index_num = #{indexNum}
+            </if>
+        </where>
+        ORDER BY a.index_num
+    </select>
+</mapper>

+ 4 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/PartialCustomerInfoMapper.xml

@@ -0,0 +1,4 @@
+<?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.jeeplus.finance.projectRecords.mapper.PartialCustomerInfoMapper">
+</mapper>

+ 257 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/ProjectMapper.xml

@@ -0,0 +1,257 @@
+<?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.jeeplus.finance.projectRecords.mapper.ProjectMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.finance.projectRecords.domain.Project">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by_id" jdbcType="VARCHAR" property="createById" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by_id" jdbcType="VARCHAR" property="updateById" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    <result column="customer_name" jdbcType="VARCHAR" property="customerName" />
+    <result column="project_name" jdbcType="VARCHAR" property="projectName" />
+    <result column="evaluation_objective" jdbcType="VARCHAR" property="evaluationObjective" />
+    <result column="project_type" jdbcType="VARCHAR" property="projectType" />
+    <result column="evaluation_base_date" jdbcType="TIMESTAMP" property="evaluationBaseDate" />
+    <result column="evaluation_report_date" jdbcType="TIMESTAMP" property="evaluationReportDate" />
+    <result column="protocol_num" jdbcType="VARCHAR" property="protocolNum" />
+    <result column="document_num" jdbcType="VARCHAR" property="documentNum" />
+    <result column="project_head" jdbcType="VARCHAR" property="projectHead" />
+    <result column="wayst_evaluation" jdbcType="VARCHAR" property="waystEvaluation" />
+    <result column="fixed_assets_evaluation" jdbcType="VARCHAR" property="fixedAssetsEvaluation" />
+    <result column="net_assets_evaluation" jdbcType="VARCHAR" property="netAssetsEvaluation" />
+    <result column="rent_evaluation" jdbcType="VARCHAR" property="rentEvaluation" />
+    <result column="forensics" jdbcType="VARCHAR" property="forensics" />
+    <result column="report_charges" jdbcType="VARCHAR" property="reportCharges" />
+    <result column="current_dispose_person" jdbcType="VARCHAR" property="currentDisposePerson" />
+    <result column="is_invoice" jdbcType="VARCHAR" property="isInvoice" />
+    <result column="invoice_date" jdbcType="TIMESTAMP" property="invoiceDate" />
+    <result column="actual_charges" jdbcType="VARCHAR" property="actualCharges" />
+    <result column="is_contract_archive" jdbcType="VARCHAR" property="isContractArchive" />
+    <result column="is_papers_intact" jdbcType="VARCHAR" property="isPapersIntact" />
+    <result column="is_papers_archive" jdbcType="VARCHAR" property="isPapersArchive" />
+    <result column="ops_amount" jdbcType="VARCHAR" property="opsAmount" />
+    <result column="is_ops_reimbursement" jdbcType="VARCHAR" property="isOpsReimbursement" />
+    <result column="reimbursement_amount" jdbcType="VARCHAR" property="reimbursementAmount" />
+    <result column="unreimbursed_amount" jdbcType="VARCHAR" property="unreimbursedAmount" />
+    <result column="reimbursement_num" jdbcType="VARCHAR" property="reimbursementNum" />
+    <result column="reimbursement_date" jdbcType="TIMESTAMP" property="reimbursementDate" />
+    <result column="evaluation_person_one" jdbcType="VARCHAR" property="evaluationPersonOne" />
+    <result column="evaluation_person_two" jdbcType="VARCHAR" property="evaluationPersonTwo" />
+    <result column="status" jdbcType="VARCHAR" property="status" />
+    <result column="assess_report_message" jdbcType="VARCHAR" property="assessReportMessage" />
+    <result column="assess_base_message" jdbcType="VARCHAR" property="assessBaseMessage" />
+    <result column="invoice_message" jdbcType="VARCHAR" property="invoiceMessage" />
+    <result column="is_commission_reimbursement" jdbcType="VARCHAR" property="isCommissionReimbursement" />
+    <result column="item_type" jdbcType="VARCHAR" property="itemType" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    id, create_by_id, create_time, update_by_id, update_time, remarks, del_flag, customer_name,
+    project_name, evaluation_objective, project_type, evaluation_base_date, evaluation_report_date,
+    protocol_num, document_num, project_head, wayst_evaluation, fixed_assets_evaluation,
+    net_assets_evaluation, rent_evaluation, forensics, report_charges, current_dispose_person,
+    is_invoice, invoice_date, actual_charges, is_contract_archive, is_papers_intact,
+    is_papers_archive, ops_amount, is_ops_reimbursement, reimbursement_amount, unreimbursed_amount,
+    reimbursement_num, reimbursement_date, evaluation_person_one, evaluation_person_two,
+    `status`, assess_report_message, assess_base_message, invoice_message, is_commission_reimbursement,
+    item_type
+  </sql>
+
+  <sql id="to_list">
+    pr.id,
+    pr.create_by_id,
+    pr.create_time,
+    pr.update_by_id,
+    pr.update_time,
+    pr.remarks,
+    pr.del_flag,
+    pr.customer_name,
+    pr.project_name,
+    pr.year,
+    pr.evaluation_objective,
+    pr.project_type,
+    pr.evaluation_base_date,
+    pr.evaluation_report_date,
+    pr.protocol_num,
+    pr.document_num,
+    pr.wayst_evaluation,
+    pr.fixed_assets_evaluation,
+    pr.net_assets_evaluation,
+    pr.rent_evaluation,
+    pr.forensics,
+    pr.report_charges,
+    pr.current_dispose_person,
+    pr.is_invoice,
+    pr.invoice_date,
+    pr.actual_charges,
+    pr.is_contract_archive,
+    pr.is_papers_intact,
+    pr.is_papers_archive,
+    pr.ops_amount,
+    pr.is_ops_reimbursement,
+    pr.reimbursement_amount,
+    pr.unreimbursed_amount,
+    pr.reimbursement_num,
+    pr.reimbursement_date,
+    pr.`status`,
+    pr.assess_report_message,
+    pr.assess_base_message,
+    pr.invoice_message,
+    pr.is_commission_reimbursement,
+    pr.item_type,
+    pr.file_upload_type
+  </sql>
+
+
+  <select id="selectByDocumentNum" resultType="com.jeeplus.finance.projectRecords.domain.Project">
+    select
+    <include refid="Base_Column_List"></include>
+    from
+    project_records
+    <where>
+      del_flag = '0' and document_num = #{documentNum}
+      <if test="id != null and id != ''">
+        and id = #{id}
+      </if>
+    </where>
+  </select>
+
+  <select id="selectByProjectId" resultType="com.jeeplus.finance.projectRecords.domain.Project">
+    select
+    <include refid="to_list"></include>,
+    su1.id as projectHead,
+    pr.evaluation_person_one,
+    pr.evaluation_person_two
+--     su2.id as evaluationPersonOne,
+--     su3.id as evaluationPersonTwo
+    from project_records pr
+    left join sys_user su1 on pr.project_head = su1.id
+    left join sys_user su2 on pr.evaluation_person_one = su2.id
+    left join sys_user su3 on pr.evaluation_person_two = su3.id
+    where pr.del_flag = '0' and pr.id = #{projectId}
+  </select>
+
+  <select id="selectPage" resultType="com.jeeplus.finance.projectRecords.domain.Project">
+    select
+    <include refid="to_list"></include>,
+    su1.name as projectHead,
+    su1.id as projectHeadId,
+    pr.evaluation_person_one,
+    pr.evaluation_person_two
+--     su2.name as evaluationPersonOne,
+--     su3.name as evaluationPersonTwo
+    from project_records pr
+    left join sys_user su1 on pr.project_head = su1.id
+    left join sys_user su2 on pr.evaluation_person_one = su2.id
+    left join sys_user su3 on pr.evaluation_person_two = su3.id
+    <where >
+      pr.del_flag = '0'
+      <if test="project.customerName != null and project.customerName != ''">
+        and pr.customer_name like concat('%',#{project.customerName},'%')
+      </if>
+      <if test="project.projectName != null and project.projectName != ''">
+        and pr.project_name like concat('%',#{project.projectName},'%')
+      </if>
+      <if test="project.itemType != null and project.itemType != ''">
+        and pr.item_type = #{project.itemType}
+      </if>
+    </where>
+    order by pr.create_time desc
+  </select>
+
+  <select id="findList" resultType="com.jeeplus.finance.projectRecords.domain.Project">
+    select
+    <include refid="to_list"></include>,
+    su1.name as projectHead,
+    su1.id as projectHeadId,
+    pr.evaluation_person_one,
+    pr.evaluation_person_two
+--     su2.name as evaluationPersonOne,
+--     su3.name as evaluationPersonTwo
+    from project_records pr
+    left join sys_user su on pr.project_head = su.id
+    left join sys_user su1 on pr.project_head = su1.id
+    left join sys_user su2 on pr.evaluation_person_one = su2.id
+    left join sys_user su3 on pr.evaluation_person_two = su3.id
+    ${ew.customSqlSegment}
+    order by pr.create_time desc
+  </select>
+
+  <select id="proportion" resultType="java.lang.Integer">
+    SELECT
+        count(1)
+    FROM
+        project_records pr
+    left join sys_user su on pr.project_head = su.id
+    ${ew.customSqlSegment}
+  </select>
+
+  <select id="projectAllList" resultType="com.jeeplus.finance.projectRecords.service.dto.FileUploadListDTO">
+    SELECT
+        su.`name`,
+        COUNT(1) AS allNum
+    FROM
+        project_records pr
+        LEFT JOIN sys_user su ON pr.project_head = su.id
+    <where>
+      su.del_flag=0
+      and pr.del_flag=0
+      and pr.item_type = #{itemType}
+      <if test="year != null and year != ''">
+        and pr.year = #{year}
+      </if>
+      <if test="customerName != null and customerName != ''">
+        and pr.customer_name like concat('%',#{customerName},'%')
+      </if>
+      <if test="protocolNum != null and protocolNum != ''">
+        and pr.protocol_num like concat('%',#{protocolNum},'%')
+      </if>
+      <if test="projectName != null and projectName != ''">
+        and pr.project_name like concat('%',#{projectName},'%')
+      </if>
+      <if test="documentNum != null and documentNum != ''">
+        and pr.document_num like concat('%',#{documentNum},'%')
+      </if>
+      <if test="projectHead != null and projectHead != ''">
+        and pr.project_head = #{projectHead}
+      </if>
+    </where>
+        GROUP BY su.id
+  </select>
+
+  <select id="projectList" resultType="com.jeeplus.finance.projectRecords.service.dto.FileUploadListDTO">
+    SELECT
+        su.`name`,
+        COUNT(1) AS num
+    FROM
+        project_records pr
+        LEFT JOIN sys_user su ON pr.project_head = su.id
+    <where>
+      su.del_flag=0
+      and pr.del_flag=0
+      and pr.file_upload_type = 1
+      and pr.item_type = #{itemType}
+      <if test="year != null and year != ''">
+        and pr.year = #{year}
+      </if>
+      <if test="customerName != null and customerName != ''">
+        and pr.customer_name like concat('%',#{customerName},'%')
+      </if>
+      <if test="protocolNum != null and protocolNum != ''">
+        and pr.protocol_num like concat('%',#{protocolNum},'%')
+      </if>
+      <if test="projectName != null and projectName != ''">
+        and pr.project_name like concat('%',#{projectName},'%')
+      </if>
+      <if test="documentNum != null and documentNum != ''">
+        and pr.document_num like concat('%',#{documentNum},'%')
+      </if>
+      <if test="projectHead != null and projectHead != ''">
+        and pr.project_head = #{projectHead}
+      </if>
+    </where>
+        GROUP BY su.id
+  </select>
+
+</mapper>

+ 68 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/CwProjectRecordsService.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -81,6 +82,40 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
     @Resource
     private CwProjectPlanDetailsMapper cwProjectPlanDetailsMapper;
 
+    @Resource
+    private EngineeringTreeService engineeringService;
+    @Resource
+    private PartialCustomerInfoService customerInfoService;
+    /**
+     * 差选项目列表信息
+     * @param page
+     * @param customerInfo
+     * @return
+     * @throws Exception
+     */
+    public IPage<PartialCustomerInfo> partialCustomerInfoList(Page<PartialCustomerInfo> page, PartialCustomerInfo customerInfo) throws Exception{
+        QueryWrapper<PartialCustomerInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("a.del_flag","0");
+        if (ObjectUtil.isNotEmpty(customerInfo)) {
+            // 联系人
+            if (StringUtils.isNotBlank(customerInfo.getClientName())){
+                queryWrapper.like("cli.name",customerInfo.getClientName());
+            }
+            // 客户名称
+            if (StringUtils.isNotBlank(customerInfo.getName())){
+                queryWrapper.like("a.name",customerInfo.getName());
+            }
+            // 创建人名称
+            if (StringUtils.isNotBlank(customerInfo.getCreateUserName())){
+                queryWrapper.like("su.name",customerInfo.getCreateUserName());
+            }
+        }
+
+        IPage<PartialCustomerInfo> list = cwProjectRecordsMapper.partialCustomerInfoList(page, queryWrapper);
+        return list;
+    }
+
+
     /**
      * 差选项目列表信息
      * @param page
@@ -196,7 +231,6 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
     public IPage<CwProjectRecordsDTO> findList(Page<CwProjectRecordsDTO> page, CwProjectRecordsDTO cwProjectRecordsDTO) throws Exception{
         QueryWrapper<CwProjectRecords> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( CwProjectRecordsWrapper.INSTANCE.toEntity(cwProjectRecordsDTO), CwProjectRecords.class );
         queryWrapper.eq("a.del_flag","0");
-        queryWrapper.eq("a.project_type","1");
         if (ObjectUtil.isNotEmpty(cwProjectRecordsDTO)) {
             if (ArrayUtil.isNotEmpty(cwProjectRecordsDTO.getCreateDates())) {
                 queryWrapper.between("a.create_time", cwProjectRecordsDTO.getCreateDates()[0], cwProjectRecordsDTO.getCreateDates()[1]);
@@ -363,6 +397,11 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
                 cwProjectRecordsDTO.setPlanDate(planDate);
             }
         }
+        //查询工程类型树形选择器数据
+        if (null == cwProjectRecordsDTO) {
+            cwProjectRecordsDTO = new CwProjectRecordsDTO();
+        }
+        cwProjectRecordsDTO.setEngineeringTypeList(engineeringService.findList(new ProjectEngineeringInfo()));
         return cwProjectRecordsDTO;
     }
 
@@ -402,12 +441,40 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
         }
         CwProjectRecords cwProjectRecords = CwProjectRecordsWrapper.INSTANCE.toEntity(cwProjectRecordsDTO);
 
+        if (StringUtils.isBlank(cwProjectRecords.getId())) {
+            cwProjectRecords.setId(UUID.randomUUID().toString().replace("-", ""));
+        }
+
+        //施工方信息保存操作
+        if (null != cwProjectRecordsDTO.getCwProjectConstructionList() && cwProjectRecordsDTO.getCwProjectConstructionList().size()>0){
+            //先根据项目id删除施工方信息
+            customerInfoService.remove(new QueryWrapper<PartialCustomerInfo>().lambda()
+                    .eq(PartialCustomerInfo::getRecordsId,cwProjectRecordsDTO.getId()));
+            //重新添加施工方信息
+            List<PartialCustomerInfo> constructionList = cwProjectRecordsDTO.getCwProjectConstructionList();
+            for (int i = 0; i < constructionList.size(); i++) {
+                PartialCustomerInfo customerInfo = new PartialCustomerInfo();
+                BeanUtil.copyProperties(constructionList.get(i), customerInfo);
+                customerInfo.setId(UUID.randomUUID().toString().replace("-", ""));
+                customerInfo.setCreateById(userDTO.getId());
+                customerInfo.setCreateTime(new Date());
+                customerInfo.setUpdateById(userDTO.getId());
+                customerInfo.setUpdateTime(new Date());
+                customerInfo.setRecordsId(cwProjectRecords.getId());
+                customerInfoService.save(customerInfo);
+            }
+        }
+
         if (ObjectUtil.isNotEmpty(cwProjectRecords)) {
             if (StringUtils.isBlank(cwProjectRecords.getCreateById())) {
                 cwProjectRecords.setCreateById(userDTO.getId());
             }
         }
+        if (StringUtils.isNotBlank(cwProjectRecordsDTO.getEngineeringType())) {
+            cwProjectRecords.setEngineeringType(cwProjectRecordsDTO.getEngineeringType());
+        }
         this.saveOrUpdate(cwProjectRecords);
+
         if (ObjectUtil.isNotEmpty(cwProjectRecordsDTO)) {
             // 附件
 //            ossService.saveOrUpdateFileList(cwProjectRecordsDTO.getWorkAttachmentDtoList(),cwProjectRecords.getId(),"cw_project_records");

+ 71 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/EngineeringTreeService.java

@@ -0,0 +1,71 @@
+package com.jeeplus.finance.projectRecords.service;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.finance.projectRecords.domain.EngineeringTree;
+import com.jeeplus.finance.projectRecords.domain.ProjectEngineeringInfo;
+import com.jeeplus.finance.projectRecords.mapper.EngineeringTreeMapper;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.utils.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2024-03-11 14:20
+ */
+@Service
+@Transactional
+public class EngineeringTreeService extends ServiceImpl<EngineeringTreeMapper, EngineeringTree> {
+
+    public List<EngineeringTree> findList(ProjectEngineeringInfo projectEngineeringInfo) {
+        // 查出所有的数据
+        List<ProjectEngineeringInfo> list = baseMapper.findList(projectEngineeringInfo);
+
+        // 转换成树形结构
+        List<EngineeringTree> trees = new ArrayList<>();
+        list.forEach(li -> {
+            // 创建树形节点
+            EngineeringTree tree = new EngineeringTree();
+            tree.setValue(li.getId());
+            tree.setLabel(li.getEngineeringName());
+            tree.setChildren(new ArrayList<>());
+
+            // 如果是根节点,则直接添加到树中
+            if ("0".equals(li.getParentId())) {
+                trees.add(tree);
+            } else {
+                // 查找父节点并添加到父节点的子节点列表中
+                findParentAndAddChild(trees, li);
+            }
+        });
+
+        return trees;
+    }
+
+    private void findParentAndAddChild(List<EngineeringTree> trees, ProjectEngineeringInfo node) {
+        for (EngineeringTree tree : trees) {
+            if (tree.getValue().equals(node.getParentId())) {
+                tree.getChildren().add(nodeToTree(node));
+                return;
+            }
+            // 递归查找父节点
+            findParentAndAddChild(tree.getChildren(), node);
+        }
+    }
+
+    private EngineeringTree nodeToTree(ProjectEngineeringInfo node) {
+        EngineeringTree tree = new EngineeringTree();
+        tree.setValue(node.getId());
+        tree.setLabel(node.getEngineeringName());
+        tree.setChildren(new ArrayList<>());
+        return tree;
+    }
+
+}

+ 18 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/PartialCustomerInfoService.java

@@ -0,0 +1,18 @@
+package com.jeeplus.finance.projectRecords.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.finance.projectRecords.domain.PartialCustomerInfo;
+import com.jeeplus.finance.projectRecords.mapper.PartialCustomerInfoMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2024-03-12 13:43
+ */
+@Service
+@Transactional
+public class PartialCustomerInfoService  extends ServiceImpl<PartialCustomerInfoMapper, PartialCustomerInfo> {
+
+}

+ 10 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/dto/CwProjectRecordsDTO.java

@@ -7,6 +7,9 @@ import com.jeeplus.core.query.Query;
 import com.jeeplus.core.query.QueryType;
 import com.jeeplus.core.service.dto.BaseDTO;
 import com.jeeplus.finance.projectRecords.domain.CwProjectPlanDetails;
+import com.jeeplus.finance.projectRecords.domain.EngineeringTree;
+import com.jeeplus.finance.projectRecords.domain.PartialCustomerInfo;
+import com.jeeplus.finance.projectRecords.domain.ProjectEngineeringInfo;
 import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientBaseDTO;
 import com.jeeplus.sys.domain.WorkAttachmentInfo;
 import com.jeeplus.sys.service.dto.OfficeDTO;
@@ -26,6 +29,13 @@ import java.util.List;
 public class CwProjectRecordsDTO extends BaseDTO {
     private static final long serialVersionUID = 1L;
 
+    private List<PartialCustomerInfo> cwProjectConstructionList;
+
+    /**
+     * 工程类型
+     */
+    private String engineeringType;
+    private List<EngineeringTree> engineeringTypeList;
     /**
      * 项目开始时间
      */

+ 1 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/service/CwWorkClientService.java

@@ -228,7 +228,7 @@ public class CwWorkClientService extends ServiceImpl<CwWorkClientBaseMapper, CwW
     public CwWorkClientBaseDTO queryById(String id) {
 
         CwWorkClientBaseDTO cwWorkClientBaseDTO = cwWorkClientBaseMapper.queryById(id);
-        if (StringUtils.isNotBlank(cwWorkClientBaseDTO.getRepresentativeParty())){
+        if (null != cwWorkClientBaseDTO && StringUtils.isNotBlank(cwWorkClientBaseDTO.getRepresentativeParty())){
             List<String> representativePartyList = Arrays.asList(cwWorkClientBaseDTO.getRepresentativeParty().split(","));
             cwWorkClientBaseDTO.setRepresentativePartys(representativePartyList);
         }

+ 27 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/controller/UserController.java

@@ -1143,6 +1143,33 @@ public class UserController {
     }
 
     /**
+     * 获取机构JSON数据。
+     *
+     * @param officeName 部门名称
+     * @param extId 排除的ID
+     * @param type  类型(1:公司;2:部门)
+     * @param showAll 是否显示不可用数据 1 显示 0 隐藏
+     * @return
+     */
+    @ApiLog("获取部门用户数据(拥有造价师资质)")
+    @GetMapping("treeUserDataAllOffice2")
+    public ResponseEntity treeUserDataAllOffice2(@RequestParam(required = false) String officeName,@RequestParam(required = false) String extId, @RequestParam(required = false) String type, @RequestParam(required = false, defaultValue = CommonConstants.NO) String showAll) {
+        List<OfficeDTO> list = officeService.getOfficeAllByOfficeName (officeName);
+        if(list.size()>0){
+            List<String> officeIds = Lists.newArrayList();
+            for (OfficeDTO info : list) {
+                info.setTypeFlag(true);
+                officeIds.add(info.getId());
+            }
+            //根据部门查询对应部门下的所有数据
+            List<OfficeDTO> officeDTOList = userService.getUserByOffice(officeIds,type);
+            list.addAll(officeDTOList);
+        }
+        List rootTree = officeService.getRootTree (list, extId, type, showAll, "1");
+        return ResponseEntity.ok (rootTree);
+    }
+
+    /**
      * 获取评估机构JSON数据。
      *
      * @param officeName 部门名称