Преглед изворни кода

项目管理功能筛选调整

user5 пре 2 година
родитељ
комит
86829fef3e

+ 109 - 37
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml

@@ -340,8 +340,10 @@
 
 
 	<select id="findList" resultType="RuralProjectRecords" >
+		select * from (
 		SELECT
 			<include refid="projectRecordsColumns"/>
+		,concat(ifnull( pfp.STATUS, 0 ),ifnull( ppf.STATUS, 0 )) as "downProjectReportRecordPaperFilingStatus"
 		,(select group_concat(su.name) from work_project_user wpu left join sys_user su on su.id = wpu.user_id where wpu.project_id = a.id) as "leaderNameStr"
 		,(select group_concat(su.id) from work_project_user wpu left join sys_user su on su.id = wpu.user_id where wpu.project_id = a.id) as "leaderNameIds"
 		,a.submit_money as "submitMoney"
@@ -509,9 +511,6 @@
 								AND( /*pfp.status is null or*/ ppf.status is null )
 							</if>
 						</when>
-						<otherwise>
-							AND( (a.submit_money = 2 and pfp.status is null) or (a.submit_money = 1 and ppf.status is null) )
-						</otherwise>
 					</choose>
 				</when>
 				<otherwise>
@@ -525,9 +524,6 @@
 									and ppf.status = #{downProjectReportRecordStatus}
 								</if>
 							</when>
-							<otherwise>
-								and ppf.status = #{downProjectReportRecordStatus}
-							</otherwise>
 						</choose>
 
 					</if>
@@ -622,33 +618,76 @@
 				ORDER BY SUBSTRING(a.project_id,-9) DESC
 			</otherwise>
 		</choose>
+		) temporarydb
+		<where>
+		1=1
+			<choose>
+				<when test="downProjectReportRecordStatus == 0">
+					<choose>
+						<when test="submitMoney !=null and submitMoney !=''">
+							<if test="submitMoney == 1">
+								AND( temporarydb.downProjectReportRecordPaperFilingStatus = '00')
+							</if>
+							<if test="submitMoney == 2">
+								AND( temporarydb.downProjectReportRecordPaperFilingStatus = '00')
+							</if>
+						</when>
+						<otherwise>
+							AND( temporarydb.downProjectReportRecordPaperFilingStatus = '00')
+						</otherwise>
+					</choose>
+				</when>
+				<otherwise>
+					<if test="downProjectReportRecordStatus!=null and downProjectReportRecordStatus !=''">
+						<choose>
+							<when test="submitMoney !=null and submitMoney !=''">
+								<if test="submitMoney == 1">
+									AND( temporarydb.downProjectReportRecordPaperFilingStatus like concat(#{downProjectReportRecordStatus},'%'))
+								</if>
+								<if test="submitMoney == 2">
+									AND( temporarydb.downProjectReportRecordPaperFilingStatus like concat('%',#{downProjectReportRecordStatus}))
+								</if>
+							</when>
+							<otherwise>
+								AND( temporarydb.downProjectReportRecordPaperFilingStatus like concat('%',#{downProjectReportRecordStatus},'%'))
+							</otherwise>
+						</choose>
+
+					</if>
+				</otherwise>
+			</choose>
+		</where>
 	</select>
 
     <select id="queryCount" resultType="int" >
-        SELECT count(DISTINCT a.id)
-        FROM rural_project_records a
-		left join case_base cb on a.id = cb.project_id
-
-        <if test="leaderNameStr !=null and leaderNameStr !=''">
-            LEFT JOIN work_project_user w on a.id = w.project_id
-            LEFT JOIN sys_user su on w.user_id = su.id
-        </if>
-        LEFT JOIN work_project_user w1 on a.id = w1.project_id
-        <if test="workContractInfo !=null">
-            LEFT JOIN work_contract_info wci on a.contract_id = wci.id
-        </if>
-        <if test="workContractInfo!=null and workContractInfo.client !=null and workContractInfo.client.name !=null and workContractInfo.client.name !=''">
-            LEFT JOIN work_client_info wct on wci.client_id = wct.id
-        </if>
-		left join project_report_data prd on prd.project_id = a.id
-		left join project_report_data_two prdt on prdt.project_id = a.id
-		left join rural_project_report_record prr on prr.report_id = prd.id
-		LEFT JOIN project_material_defect_record pmdr on prd.id = pmdr.report_id
-		left join rural_project_report_record_down prrd on prrd.report_id = prd.id
-		LEFT JOIN project_flingbatch_relation pfp on pfp.project_id= a.id
-		LEFT JOIN sys_user sua on a.create_by = sua.id
-		left join project_paper_filing ppf on ppf.project_id = a.id
+		select count(DISTINCT id) from (
+        SELECT DISTINCT (a.id) as id
+		,concat(ifnull( pfp.STATUS, 0 ),ifnull( ppf.STATUS, 0 )) as "downProjectReportRecordPaperFilingStatus"
+		FROM rural_project_records a
+		LEFT JOIN sys_area area
+		ON area.id = a.area_id
+		LEFT JOIN rural_project_records_reported rprr
+		ON rprr.id = a.id
+		LEFT JOIN case_base cb
+		ON a.id = cb.project_id /*LEFT JOIN project_flingbatch_relation pfp
+		ON pfp.project_id=a.id*/
+		LEFT JOIN (select id,status,project_id,filing_batch
+		FROM (
+		SELECT id,create_date,status,project_id,filing_batch
+		FROM project_flingbatch_relation order by create_date desc )z group by z.project_id desc ) pfp
+		ON pfp.project_id = a.id
+		LEFT JOIN project_filingbatch pfb ON pfb.id = pfp.filing_batch
+		LEFT JOIN sys_user sua ON a.create_by = sua.id
+		LEFT JOIN work_project_user w1 ON a.id = w1.project_id
+		LEFT JOIN work_contract_info wci ON a.contract_id = wci.id
+		LEFT JOIN work_client_info wct ON wci.client_id = wct.id
 		LEFT JOIN sys_office o ON o.id = a.office_id
+		LEFT JOIN project_report_data prd ON prd.project_id = a.id
+		LEFT JOIN project_report_data_two prdt ON prdt.project_id = a.id
+		LEFT JOIN rural_project_report_record prr ON prr.report_id = prd.id
+		LEFT JOIN project_material_defect_record pmdr ON prd.id = pmdr.report_id
+		LEFT JOIN rural_project_report_record_down prrd ON prrd.report_id = prd.id
+		LEFT JOIN project_paper_filing ppf ON ppf.project_id = a.id
 		<where>
             a.status = 5
             <if test="projectId != null and projectId != ''">
@@ -739,9 +778,6 @@
 								AND( /*pfp.status is null or*/ ppf.status is null )
 							</if>
 						</when>
-						<otherwise>
-							AND( (a.submit_money = 2 and pfp.status is null) or (a.submit_money = 1 and ppf.status is null) )
-						</otherwise>
 					</choose>
 				</when>
 				<otherwise>
@@ -755,9 +791,6 @@
 									and ppf.status = #{downProjectReportRecordStatus}
 								</if>
 							</when>
-							<otherwise>
-								and ppf.status = #{downProjectReportRecordStatus}
-							</otherwise>
 						</choose>
 
 					</if>
@@ -837,8 +870,47 @@
             <if test="sqlMap.dsf !=null and sqlMap.dsf!=''">
                 AND ((w1.user_id = #{currentUser.id} AND w1.del_flag='0' AND a.company_id = #{currentUser.company.id})${sqlMap.dsf} )
             </if>
-        </where>
-    </select>
+        </where>) temporarydb
+		<where>
+		1=1
+			<choose>
+				<when test="downProjectReportRecordStatus == 0">
+					<choose>
+						<when test="submitMoney !=null and submitMoney !=''">
+							<if test="submitMoney == 1">
+								AND( temporarydb.downProjectReportRecordPaperFilingStatus = '00')
+							</if>
+							<if test="submitMoney == 2">
+								AND( temporarydb.downProjectReportRecordPaperFilingStatus = '00')
+							</if>
+						</when>
+						<otherwise>
+							AND( temporarydb.downProjectReportRecordPaperFilingStatus = '00')
+						</otherwise>
+					</choose>
+				</when>
+				<otherwise>
+					<if test="downProjectReportRecordStatus!=null and downProjectReportRecordStatus !=''">
+						<choose>
+							<when test="submitMoney !=null and submitMoney !=''">
+								<if test="submitMoney == 1">
+									AND( temporarydb.downProjectReportRecordPaperFilingStatus like concat(#{downProjectReportRecordStatus},'%'))
+								</if>
+								<if test="submitMoney == 2">
+									AND( temporarydb.downProjectReportRecordPaperFilingStatus like concat('%',#{downProjectReportRecordStatus}))
+								</if>
+							</when>
+							<otherwise>
+								AND( temporarydb.downProjectReportRecordPaperFilingStatus like concat('%',#{downProjectReportRecordStatus},'%'))
+							</otherwise>
+						</choose>
+
+					</if>
+				</otherwise>
+			</choose>
+		</where>
+
+	</select>
 
 	<select id="findListByStatus" resultType="RuralProjectRecords" >
 		SELECT