浏览代码

Merge remote-tracking branch 'origin/master'

[user3] 3 年之前
父节点
当前提交
693e5dfae5

+ 7 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageAllDao.java

@@ -31,4 +31,11 @@ public interface RuralProjectMessageAllDao extends CrudDao<RuralProjectRecords>
      * @return
      */
     List<RuralProjectRecords> getProjectMaterialList(@Param("projectIdList") List<String> projectIdList);
+
+    /**
+     * 查询上报导出数据信息
+     * @param ruralProjectRecords
+     * @return
+     */
+    List<RuralProjectRecords> findListOnReportedDownload(RuralProjectRecords ruralProjectRecords);
 }

+ 21 - 1
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java

@@ -224,6 +224,8 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private String emergencyProject;	//是否是紧急项目
 	private String recordTypeStr;	//归档类型多选
 	private List<String> recordTypeList;	//归档类型
+	private String reportedTypeStr;	//上报类型多选
+	private List<String> reportedTypeList;	//上报类型
 
 
 	private List<String> civilProjectList = Lists.newArrayList();
@@ -271,7 +273,7 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 		this.recodeNum = recodeNum;
 	}
 
-	@ExcelField(title="归档状态", align=2, sort=18,dictType = "archive_state")
+	@ExcelField(title="电子归档状态", align=2, sort=18,dictType = "archive_state")
 	public Integer getProjectReportRecordStatus() {
 		return projectReportRecordStatus;
 	}
@@ -850,6 +852,7 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 		this.constructionLinkman = constructionLinkman;
 	}
 
+	@ExcelField(title="上报状态", align=2, sort=19,dictType = "reported_state")
 	public String getReportedState() {
 		return reportedState;
 	}
@@ -978,6 +981,7 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 		this.syncStatus = syncStatus;
 	}
 
+
 	public String getReportStatus() {
 		return reportStatus;
 	}
@@ -1618,4 +1622,20 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	public void setPpfId(String ppfId) {
 		this.ppfId = ppfId;
 	}
+
+	public String getReportedTypeStr() {
+		return reportedTypeStr;
+	}
+
+	public void setReportedTypeStr(String reportedTypeStr) {
+		this.reportedTypeStr = reportedTypeStr;
+	}
+
+	public List<String> getReportedTypeList() {
+		return reportedTypeList;
+	}
+
+	public void setReportedTypeList(List<String> reportedTypeList) {
+		this.reportedTypeList = reportedTypeList;
+	}
 }

+ 44 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageAllService.java

@@ -577,6 +577,12 @@ public class RuralProjectMessageAllService extends CrudService<RuralProjectMessa
         projectRecords.setWorkContractInfo(workContractInfo);
     }
 
+    /**
+     * 归档数据导出
+     * @param page
+     * @param projectRecords
+     * @return
+     */
     public Page<RuralProjectRecords> findPageRecordDownload(Page<RuralProjectRecords> page, RuralProjectRecords projectRecords) {
         //添加查询类型
         List<String> typeList = Lists.newArrayList();
@@ -628,4 +634,42 @@ public class RuralProjectMessageAllService extends CrudService<RuralProjectMessa
         page.setList(recordsList);
         return page;
     }
+
+    /**
+     * 上报数据导出
+     * @param page
+     * @param projectRecords
+     * @return
+     */
+    public Page<RuralProjectRecords> findPageReportedDownload(Page<RuralProjectRecords> page, RuralProjectRecords projectRecords) {
+        //添加查询类型
+        List<String> typeList = Lists.newArrayList();
+        typeList.add("1");
+        typeList.add("2");
+        //添加查询类型list
+        projectRecords.setTypeList(typeList);
+        //处理上报选择项
+        if(StringUtils.isNotBlank(projectRecords.getReportedTypeStr())) {
+            List<String> list = Arrays.asList(projectRecords.getReportedTypeStr().split(","));
+            list = new ArrayList(list);
+            if (projectRecords.getReportedTypeStr().contains("0")){
+                for (String type: list) {
+                    //判断如果上报状态选择了0 则需要捞取未上报的数据
+                    if("0".equals(type)){
+                        list.remove(type);
+                        projectRecords.setReportedState("0");
+                        break;
+                    }
+                }
+            }
+            if(!"0".equals(projectRecords.getReportedState())){
+                projectRecords.setReportedState("1");
+            }
+            projectRecords.setReportedTypeList(list);
+        }
+        //查询项目信息
+        List<RuralProjectRecords> recordsList = dao.findListOnReportedDownload(projectRecords);
+        page.setList(recordsList);
+        return page;
+    }
 }

+ 31 - 3
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageAllController.java

@@ -467,10 +467,10 @@ public class RuralProjectMessageAllController extends BaseController {
      */
     @RequestMapping("getRecordType")
     @ResponseBody
-    public AjaxJson getRecordType(){
+    public AjaxJson getRecordType(String type){
         AjaxJson ajaxJson = new AjaxJson();
         try {
-            List<Dict> archiveStateList = DictUtils.getDictList("archive_state");
+            List<Dict> archiveStateList = DictUtils.getDictList(type);
             List<Map<String, Object>> mapList = new ArrayList<>();
             for (int i = 0; i < archiveStateList.size(); i++) {
                 Map<String, Object> map = new HashMap<>();
@@ -489,7 +489,7 @@ public class RuralProjectMessageAllController extends BaseController {
     }
 
     /**
-     * 导出excel文件
+     * 导出归档excel文件
      */
     @RequiresPermissions("ruralProject:ruralProjectMessageAll:recordDownload")
     @RequestMapping(value = "recordDownload", method= RequestMethod.POST)
@@ -505,4 +505,32 @@ public class RuralProjectMessageAllController extends BaseController {
         }
         return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessageAll/?repage";
     }
+
+    /**
+     * 跳转上报信息导出信息页
+     */
+    @RequestMapping(value = "skipDownloadReportedForm")
+    public String skipDownloadReportedForm(RuralProjectRecords projectRecords,Model model) {
+        model.addAttribute("projectRecords",projectRecords);
+        return "modules/ruralprojectrecords/ruralporjectmessage/all/downloadReportedForm";
+    }
+
+
+    /**
+     * 导出上报excel文件
+     */
+    @RequiresPermissions("ruralProject:ruralProjectMessageAll:reportedDownload")
+    @RequestMapping(value = "reportedDownload", method= RequestMethod.POST)
+    public String reportedDownload(RuralProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+        try {
+            String fileName = "项目"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<RuralProjectRecords> page = ruralProjectMessageAllService.findPageReportedDownload(new Page<RuralProjectRecords>(request, response, -1), projectRecords);
+            new ExportExcel("项目", RuralProjectRecords.class).setDataList(page.getList()).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出项目记录失败!失败信息:"+e.getMessage());
+            logger.error("Exception e:"+e);
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessageAll/?repage";
+    }
 }

+ 81 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageAllDao.xml

@@ -487,6 +487,7 @@
 	<select id="findListOnRecordDownload" resultType="RuralProjectRecords" >
 		SELECT
 		<include refid="projectRecordsColumns"/>
+		,ifnull(a.reported_state,0) as "reportedState"
 		,a.project_master_id as "projectMasterId"
 		,sub.name as "projectMasterName"
 		,a.submit_money as "submitMoney"
@@ -576,4 +577,84 @@
 			and pmdr.status = 5
 		</where>
 	</select>
+
+
+
+	<select id="findListOnReportedDownload" resultType="RuralProjectRecords" >
+		SELECT
+		<include refid="projectRecordsColumns"/>
+		,ifnull(a.reported_state,0) as "reportedState"
+		,a.project_master_id as "projectMasterId"
+		,sub.name as "projectMasterName"
+		,a.submit_money as "submitMoney"
+		,a.project_type as projectType,
+		wci.name AS "workContractInfo.name",
+		wct.id AS "workContractInfo.client.id",
+		wct.name AS "workContractInfo.client.name",
+		o.top_company AS "office.name",
+		ifnull(prd.number ,"") as "projectReportNumber"
+		,ifnull(prd.status,0) as "projectReportStatus"
+		,ifnull(prd.name,"") as "projectReportName"
+		,ifnull(prr.status,0) as "projectReportRecordStatus"
+		,ifnull(prrd.status,0) as "downProjectReportRecordStatus",
+		prrd.file_num as recodeNum,
+		prr.process_instance_id as prrProcessInstanceId,
+		prrd.process_instance_id as prrdProcessInstanceId
+		,prd.id as prdId
+		,prr.id as prrId
+		,prrd.id as prrdId
+		,prd.audit_pass_date as auditPassDate
+		,ifnull(rprr.report_status,0) as "reportStatus"
+		,ifnull(rprr.sync_status,0) as "syncStatus"
+		,rprr.process_instance_id as "reportedProcessInstanceId"
+		,ifnull(prdt.status,0) as "projectReportStatusTwo"
+		,prdt.id as prdtId
+		,prdt.process_instance_id as prdtProcessinstanceId
+		,ifnull(pmdr.status,0) as "defectRecordStatus"
+		,pmdr.process_instance_id as "pmdrProcessInstanceId"
+		,pmdr.id as pmdrId
+		,wci.contract_num as "workContractInfo.contractNum"
+		,wci.contract_price as "workContractInfo.contractPrice"
+		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 project_flingbatch_relation pfp on pfp.project_id=a.id
+		LEFT JOIN sys_user sua on a.create_by = sua.id
+		LEFT JOIN sys_user sub on a.project_master_id = sub.id
+		LEFT JOIN work_project_user w on a.id = w.project_id
+		LEFT JOIN sys_user su on w.user_id = su.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
+
+		<where>
+			a.status = 5
+			AND  a.status != 7 AND a.del_flag = #{DEL_FLAG_NORMAL}
+			<if test="beginDate !=null">
+				AND a.create_date >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.create_date &lt; #{endDate}
+			</if>
+			<if test="reportedTypeList !=null and reportedTypeList !=''">
+				and (a.reported_state in
+				<foreach collection="reportedTypeList" item="status" index="index" open="(" close=")" separator=",">
+					#{status}
+				</foreach>
+				<if test="reportedState == 0">
+					or a.reported_state is null)
+				</if>
+				<if test="reportedState == 1">
+					)
+				</if>
+			</if>
+
+		</where>
+	</select>
 </mapper>

+ 3 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/all/downloadRecordForm.jsp

@@ -100,6 +100,9 @@
 		$.ajax({
 			type:'post',
 			url:'${ctx}/ruralProject/ruralProjectMessageAll/getRecordType',
+			data:{
+				"type":'archive_state'
+			},
 			success:function(data){
 				if(data.success) {
 					var data = data.body.list;

+ 139 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/all/downloadReportedForm.jsp

@@ -0,0 +1,139 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>选择下载模板类型</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+	<script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+	<script type="text/javascript">
+
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+			var beginDateTime = $("#beginDate").val();
+			var endDateTime = $("#endDate").val();
+			if(beginDateTime != null && beginDateTime != undefined && beginDateTime != ''
+					&&endDateTime != null && endDateTime != undefined && endDateTime != ''){
+				var startDate = new Date(beginDateTime.replace(/-/g, "/"));
+				var endDate = new Date(endDateTime.replace(/-/g, "/"));
+				var time = endDate.getTime() - startDate.getTime();
+				var days = parseInt(time / (1000 * 60 * 60 * 24));
+				if(days<0){
+					parent.layer.msg("项目创建结束时间需大于开始时间!", {icon: 5});
+					$("#endDate").val('');
+					return;
+				}
+			}
+
+		   var reportedTypeStr=$("#reportedTypeStr").val();
+		   if(reportedTypeStr==null||reportedTypeStr==""){
+               top.layer.msg('请选择上报状态!', {icon: 0});
+               return false;
+		   }
+		   $("#inputForm").submit();
+		  return true;
+		}
+        var validateForm;
+		$(document).ready(function() {
+			contentDetailTypeShow();
+			validateForm = $("#inputFormAdd").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			laydate.render({
+				elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+		});
+	</script>
+</head>
+<body>
+<div class="single-form-small">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="projectRecords" action="${ctx}/ruralProject/ruralProjectMessageAll/reportedDownload" method="post" class="form-horizontal">
+			<input type="hidden" id="reportedTypeStr" name="reportedTypeStr" value="">
+			<div class="form-group layui-row first">
+				<div class="layui-item layui-col-sm8 ">
+					<label class="layui-form-label">创建时间:</label>
+					<div class="layui-input-block">
+						<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${beginDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+						<span class="group-sep">-</span>
+						<input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+							   value="<fmt:formatDate value="${endDate}" pattern="yyyy-MM-dd"/>"/>
+						</input>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm8">
+					<label class="layui-form-label"><span class="require-item">*</span>上报状态:</label>
+					<div class="layui-input-block">
+						<div id="recordType" class="xm-select-demo" tabindex="0" contenteditable="true"></div>
+					</div>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+	function contentDetailTypeShow() {
+		$.ajax({
+			type:'post',
+			url:'${ctx}/ruralProject/ruralProjectMessageAll/getRecordType',
+			data:{
+				"type":'reported_state'
+			},
+			success:function(data){
+				if(data.success) {
+					var data = data.body.list;
+					$("#reportedTypeStr").val(data);
+					xmSelect.render({
+						el: '#recordType',
+						language: 'zn',
+						data:data
+					})
+				}
+			}
+		})
+	}
+
+	var recordType = xmSelect.render({
+		el: '#recordType',
+		language: 'zn',
+		data: [
+		]
+	})
+
+
+	document.getElementById('recordType').onblur=function(){
+		var list = [];
+		//获取当前多选选中的值
+		var selectArr = recordType.getValue();
+		for (var i in selectArr){
+			list.push(selectArr[i].value);
+		}
+		$("#reportedTypeStr").val(list);
+	}
+</script>
+</body>
+</html>

+ 3 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/all/ruralProjectMessageAllList.jsp

@@ -711,6 +711,9 @@
 				<div class="nav-btns">
 					<%--此处按钮样式包括 nav-btn-add nav-btn-refresh nav-btn-import nav-btn-export nav-btn-query nav-btn-reset--%>
 					<div class="layui-btn-group">
+						<shiro:hasPermission name="ruralProject:ruralProjectMessageAll:reportedDownload">
+							<div style="float: right"> <a href="javascript:void(0)" style='background-color: #FFB800' onclick="downloadDialogre('上报信息导出', '${ctx}/ruralProject/ruralProjectMessageAll/skipDownloadReportedForm','40%', '70%','','下载,关闭')" class="layui-btn layui-btn-sm" ><i class="fa fa-file-excel-o"></i> 上报信息导出</a></div>
+						</shiro:hasPermission>
 						<shiro:hasPermission name="ruralProject:ruralProjectMessageAll:recordDownload">
 							<div style="float: right"> <a href="javascript:void(0)" style='background-color: #FFB800' onclick="downloadDialogre('归档信息导出', '${ctx}/ruralProject/ruralProjectMessageAll/skipDownloadRecordForm','40%', '70%','','下载,关闭')" class="layui-btn layui-btn-sm" ><i class="fa fa-file-excel-o"></i> 归档信息导出</a></div>
 						</shiro:hasPermission>