id,
deleted,
created,
modified,
name, order_id, financial, allot_type, client_manager_id, principal_id, department_id, assets_business_gener, entrust_again, clientele_type, clientele_id, clientele_sub_id, clientele_contact_id, security, significant_assets_reorganization, state_assets, foreign_assets_involved, dispense_benefit, bailor, bailor_address, bailor_contact_name, bailor_contact_tel, terminal_clientele_id, terminal_clientele_type, terminal_clientele_contact_id, members, remark
SELECT DISTINCT
nodeInfo.recordId AS id,
assets.id AS assetsId,
assets.name,
assets.order_id,
assets_business_gener,
allot_type,
statement.production_no AS statementNo,
statement.assets_name AS statementName,
report.production_no AS reportNo,
report.assets_name AS reportName,
report.production_type AS productionType,
clientele_id,
customer.name AS customerName,
bailor,
bailor_contact_tel,
assets.created,
#查询客户经理
(SELECT name FROM user WHERE id = assets.client_manager_id) AS clientManagerName,
#查询项目负责人
(SELECT name FROM user WHERE id = assets.principal_id) AS principalName,
#查询业务来源(即子级客户)
(SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName,
nodeInfo.businessId,
nodeInfo.currentNodeName,
nodeInfo.currentNodeCode,
nodeInfo.handlerName,
nodeInfo.currentNodeId,
nodeInfo.recordId,
nodeInfo.handlerId,
nodeInfo.state AS nodeState,
pFund.id AS productionFundId,
pFund.standard_amount,
pFund.production_should_amount,
pFund.real_amount AS productionRealAmount
FROM assets
LEFT JOIN user ON user.id = assets.principal_id
LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
#查询当前进行的节点信息(并使用左连接)
LEFT JOIN (SELECT nodeInstance.id AS currentNodeId,
user.name AS handlerName,
node.name AS currentNodeName,
node.code AS currentNodeCode,
nodeInstance.business_id AS businessId,
nodeInstance.business_sub_id,
nodeInstance.business_min_id,
nodeInstance.state,
record.id AS recordId,
record.handler_id AS handlerId
FROM work_flow_node_instance AS nodeInstance,
work_task_record AS record,
user,
work_node AS node
WHERE
# state = 'PENDING'
(state = 'PENDING'
OR ( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' )
)
AND nodeInstance.node_id = node.id
AND record.handler_id = user.id
AND nodeInstance.deleted = 0
AND record.instance_id = nodeInstance.id
AND nodeInstance.business_type = 'ASSET_BUSINESS'
) AS nodeInfo ON nodeInfo.businessId = assets.id
LEFT JOIN assets_production AS statement ON statement.deleted = 0 AND statement.production_no = nodeInfo.business_sub_id AND statement.business_id = nodeInfo.businessId
LEFT JOIN assets_production AS report ON report.deleted = 0 AND report.production_no = nodeInfo.business_min_id AND report.business_id = nodeInfo.businessId
LEFT JOIN order_fund AS fund ON fund.business_id = assets.id AND business_type = 'ASSET_BUSINESS'
LEFT JOIN production_fund AS pFund ON pFund.order_fund_id = fund.id AND pFund.production_no = report.production_no
INNER JOIN (
SELECT DISTINCT
department.id,
department.parent_id,
user.id AS userId
FROM
user,
post,
department,
user_post
WHERE
user.id = user_post.user_id
AND user_post.post_id = post.id
AND post.department_id = department.id
AND user_post.deleted = 0
) AS department ON (department.id IN
#{item}
)
AND department.userId = nodeInfo.handlerId
INNER JOIN (
SELECT DISTINCT
department.id,
user.id AS userId
FROM
user,
post,
department,
user_post
WHERE
user.id = user_post.user_id
AND user_post.post_id = post.id
AND post.department_id = department.id
AND user_post.deleted = 0
) AS department ON (department.id IN
#{item}
)
AND (department.userId = assets.principal_id OR department.userId = assets.client_manager_id OR department.userId = nodeInfo.handlerId)
WHERE assets.deleted = 0
AND (nodeInfo.state = 'PENDING' OR ( nodeInfo.state = 'FINISHED' AND nodeInfo.currentNodeCode = 'BUSINESS_ARCHIVING' ))
# 评估业务类别(业务类型)查询
AND assets.assets_business_gener = #{assetsSelectDTO.assetsBusinessGener}
# 项目负责人查询
AND assets.principal_id = #{assetsSelectDTO.principalId}
#客户经理查询
AND assets.client_manager_id = #{assetsSelectDTO.clientManagerId}
# 关键字模糊查询
AND (
assets.order_id LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
assets.name LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
nodeInfo.business_sub_id LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
nodeInfo.business_min_id LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
customer.name LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
statement.assets_name LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
report.assets_name LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%')
)
# 根据处理节点查询(节点code)
AND nodeInfo.currentNodeCode = #{assetsSelectDTO.nodeCode}
AND nodeInfo.handlerId = #{assetsSelectDTO.handlerId}
AND assets.department_id = #{assetsSelectDTO.departmentId}
AND (nodeInfo.currentNodeCode = 'STATEMENT_BOOKBINDING_STAMP' OR nodeInfo.currentNodeCode = 'REPORT_BOOKBINDING_STAMP')
ORDER BY assets.created DESC
SELECT (@i := @i + 1) AS id,
assets.id AS assetsId,
CASE
WHEN reportInfo.assets_name IS NOT NULL THEN reportInfo.assets_name
WHEN (SELECT assets_name FROM assets_production WHERE assets_production.production_no = nodeInfo.business_sub_id) IS NOT NULL THEN (SELECT assets_name FROM assets_production WHERE assets_production.production_no = nodeInfo.business_sub_id)
ELSE assets.name
END AS name,
assets.order_id,
assets_business_gener,
allot_type,
# 2025年1月1日之前下的订单都是老OA系统订单,查询方式不一样
statementInfo.production_no AS statementNo,
statementInfo.production_type AS productionType,
reportInfo.production_no AS reportNo,
reportInfo.repertory_state AS reportRepertoryState,
reportInfo.delivery AS reportDelivery,
reportInfo.assets_name AS reportName,
reportInfo.production_type AS reportType,
reportInfo.id AS reportId,
clientele_id,
customer.name AS customerName,
bailor,
bailor_contact_name,
bailor_contact_tel,
assets.created,
( SELECT SUM(estimated_value) FROM assets_evaluation_target WHERE assets_evaluation_target.assets_id = assets.id ) AS estimated_value,
fund.id AS orderFundId,
fund.should_amount,
fund.real_amount,
fund.discount,
pFund.id AS productionFundId,
pFund.standard_amount,
pFund.production_should_amount,
pFund.real_amount AS productionRealAmount,
# invoice.real_amount AS invoiceRealAmount,
(SELECT SUM(real_amount) FROM finance_invoice WHERE order_fund_id = fund.id AND finance_invoice.production_fund_id = pFund.id AND deleted = 0) AS invoiceRealAmount,
#查询客户经理
assets.client_manager_id,
(SELECT name FROM user WHERE id = assets.client_manager_id) AS clientManagerName,
#查询项目负责人
assets.principal_id,
(SELECT name FROM user WHERE id = assets.principal_id) AS principalName,
#查询业务来源(即子级客户)
(SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName,
nodeInfo.businessId,
nodeInfo.currentNodeName,
nodeInfo.currentNodeCode,
nodeInfo.handlerName,
nodeInfo.recordId,
nodeInfo.currentNodeId,
nodeInfo.handlerId
FROM (SELECT @i := 0) AS sort,assets
LEFT JOIN user ON user.id = assets.principal_id
LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
LEFT JOIN order_fund AS fund ON fund.business_id = assets.id AND business_type = 'ASSET_BUSINESS'
# LEFT JOIN finance_invoice AS invoice ON invoice.order_fund_id = fund.id
#查询当前进行的节点信息
LEFT JOIN (SELECT nodeInstance.id AS currentNodeId,
user.name AS handlerName,
node.name AS currentNodeName,
node.code AS currentNodeCode,
nodeInstance.business_id AS businessId,
nodeInstance.business_sub_id,
nodeInstance.business_min_id,
record.id AS recordId,
record.handler_id AS handlerId
FROM work_flow_node_instance AS nodeInstance,
work_task_record AS record,
user,
work_node AS node
WHERE (state = 'PENDING' OR( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' ))
AND nodeInstance.node_id = node.id
AND record.handler_id = user.id
AND nodeInstance.deleted = 0
AND record.instance_id = nodeInstance.id
AND nodeInstance.business_type = 'ASSET_BUSINESS'
) AS nodeInfo ON nodeInfo.businessId = assets.id
# 2025年1月1日之前下的订单都是老OA系统订单,查询方式不一样
LEFT JOIN (SELECT id, business_id, production_no,repertory_state,production_type,delivery,assets_name FROM assets_production) AS statementInfo ON IF(assets.created < '2025-01-01', statementInfo.business_id = assets.id AND statementInfo.production_type = 'STATEMENT',statementInfo.production_no = nodeInfo.business_sub_id)
LEFT JOIN(SELECT id, business_id, production_no,repertory_state,production_type,delivery,assets_name FROM assets_production) AS reportInfo ON IF(assets.created < '2025-01-01', reportInfo.business_id = assets.id AND reportInfo.production_type != 'STATEMENT',reportInfo.production_no = nodeInfo.business_min_id)
LEFT JOIN production_fund AS pFund ON pFund.order_fund_id = fund.id AND pFund.production_no = reportInfo.production_no
WHERE assets.deleted = 0
AND assets.client_manager_id = #{assetsSelectDTO.clientManagerId}
#送达状态查询
AND reportInfo.delivery = #{assetsSelectDTO.delivery}
#项目负责人查询
AND assets.principal_id = #{assetsSelectDTO.principalId}
#关键字模糊查询
AND (
assets.order_id LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
assets.name LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
nodeInfo.business_sub_id LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
reportInfo.production_no LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%') OR
customer.name LIKE CONCAT('%',#{assetsSelectDTO.keyWord},'%')
)
AND assets.created BETWEEN #{assetsSelectDTO.startTime} AND #{assetsSelectDTO.endTime}
AND assets.department_id = #{assetsSelectDTO.departmentId}
# 筛选产品为报告的项目
AND reportInfo.production_type = #{assetsSelectDTO.productionType}
# 筛选产品为意见书的项目
AND statementInfo.production_type = #{assetsSelectDTO.productionType}
# 筛选没出产品的项目
AND statementInfo.production_type IS NULL
AND reportInfo.production_type IS NULL
ORDER BY assets.created DESC
INSERT INTO business_number(id, take_type, business_type, year, month, next_no)
VALUE (NULL, #{takeType}, #{businessType}, #{year}, #{month}, #{nextNo})
UPDATE business_number
SET month = #{month},
next_no = #{nextNo}
WHERE id = #{id}
UPDATE assets
SET name = #{assets.name},
assets_business_gener = #{assets.assetsBusinessGener},
entrust_again = #{assets.entrustAgain},
security = #{assets.security},
significant_assets_reorganization = #{assets.significantAssetsReorganization},
state_assets = #{assets.stateAssets},
foreign_assets_involved = #{assets.foreignAssetsInvolved},
dispense_benefit = #{assets.dispenseBenefit},
bailor = #{assets.bailor},
bailor_address = #{assets.bailorAddress},
bailor_contact_name = #{assets.bailorContactName},
bailor_contact_tel = #{assets.bailorContactTel}
WHERE id = #{assets.id}
AND deleted = 0