commit
This commit is contained in:
+58
-13
@@ -187,6 +187,9 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
info.id,
|
info.id,
|
||||||
info.name,
|
info.name,
|
||||||
info.code,
|
info.code,
|
||||||
|
info.caseFilingCode,
|
||||||
|
info.caseFilingResult,
|
||||||
|
info.caseFilingType,
|
||||||
info.researchFindings,
|
info.researchFindings,
|
||||||
info.brief,
|
info.brief,
|
||||||
info.measures,
|
info.measures,
|
||||||
@@ -194,6 +197,10 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
tcde.unitName,
|
tcde.unitName,
|
||||||
tcde.mobile,
|
tcde.mobile,
|
||||||
type.name AS typeName,
|
type.name AS typeName,
|
||||||
|
caseFilingResultDict.name AS caseFilingResultName,
|
||||||
|
caseFilingTypeDict.name AS caseFilingTypeName,
|
||||||
|
EXISTS (SELECT 1 FROM proposal_consolidation consolidation
|
||||||
|
WHERE JSON_CONTAINS(consolidation.consolidationIds, JSON_QUOTE(info.id))) AS isConsolidation,
|
||||||
tcs.j,
|
tcs.j,
|
||||||
tcs.c,
|
tcs.c,
|
||||||
tcs.fullName AS sessionName,
|
tcs.fullName AS sessionName,
|
||||||
@@ -204,6 +211,10 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
||||||
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
||||||
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||||
|
LEFT JOIN sys_dict caseFilingResultDict ON caseFilingResultDict.code = info.caseFilingResult
|
||||||
|
AND caseFilingResultDict.parentId = (SELECT id FROM sys_dict WHERE code = 'PROPOSAL_CASE_FILING_RESULT' LIMIT 1)
|
||||||
|
LEFT JOIN sys_dict caseFilingTypeDict ON caseFilingTypeDict.code = info.caseFilingType
|
||||||
|
AND caseFilingTypeDict.parentId = (SELECT id FROM sys_dict WHERE code = 'PROPOSAL_CASE_FILING_TYPE' LIMIT 1)
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
@@ -217,23 +228,28 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
list.get(i).put("index", i + 1);
|
list.get(i).put("index", i + 1);
|
||||||
list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief")));
|
list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief")));
|
||||||
list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures")));
|
list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures")));
|
||||||
|
// Excel 汇总表使用中文并案标识,避免直接输出数据库布尔值。
|
||||||
|
list.get(i).put("isConsolidationName", Boolean.TRUE.equals(list.get(i).getBoolean("isConsolidation")) ? "是" : "否");
|
||||||
|
|
||||||
// 流程实例
|
// 流程实例
|
||||||
ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id")));
|
ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id")));
|
||||||
|
|
||||||
// 查询附议人信息
|
// 历史提案可能没有迁移流程实例,此时仅不导出附议人,避免影响汇总表其他数据。
|
||||||
ProcessTask inviteTask = dao().fetch(ProcessTask.class,
|
if (instance != null) {
|
||||||
Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId())
|
// 查询附议人信息
|
||||||
.and(ProcessTask::getTaskName, "=", "invite")
|
ProcessTask inviteTask = dao().fetch(ProcessTask.class,
|
||||||
.and(ProcessTask::getTaskState, "in",
|
Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId())
|
||||||
List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode()))
|
.and(ProcessTask::getTaskName, "=", "invite")
|
||||||
.desc(ProcessTask::getCreatedAt));
|
.and(ProcessTask::getTaskState, "in",
|
||||||
|
List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode()))
|
||||||
|
.desc(ProcessTask::getCreatedAt));
|
||||||
|
|
||||||
if (inviteTask != null) {
|
if (inviteTask != null) {
|
||||||
NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable());
|
NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable());
|
||||||
List<NutMap> seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class);
|
List<NutMap> seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class);
|
||||||
if (Lang.isNotEmpty(seconders)) {
|
if (Lang.isNotEmpty(seconders)) {
|
||||||
list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(",")));
|
list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(",")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -241,6 +257,10 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||||
exportEntities.add(new ExcelExportEntity("序号", "index", 10));
|
exportEntities.add(new ExcelExportEntity("序号", "index", 10));
|
||||||
exportEntities.add(new ExcelExportEntity("提案编号", "code", 20));
|
exportEntities.add(new ExcelExportEntity("提案编号", "code", 20));
|
||||||
|
exportEntities.add(new ExcelExportEntity("立案编号", "caseFilingCode", 20));
|
||||||
|
exportEntities.add(new ExcelExportEntity("立案结果", "caseFilingResultName", 15));
|
||||||
|
exportEntities.add(new ExcelExportEntity("立案类型", "caseFilingTypeName", 15));
|
||||||
|
exportEntities.add(new ExcelExportEntity("是否并案", "isConsolidationName", 12));
|
||||||
exportEntities.add(new ExcelExportEntity("提案名称", "name", 20));
|
exportEntities.add(new ExcelExportEntity("提案名称", "name", 20));
|
||||||
exportEntities.add(new ExcelExportEntity("提案案由", "brief", 40));
|
exportEntities.add(new ExcelExportEntity("提案案由", "brief", 40));
|
||||||
exportEntities.add(new ExcelExportEntity("代表调研情况", "researchFindings", 40));
|
exportEntities.add(new ExcelExportEntity("代表调研情况", "researchFindings", 40));
|
||||||
@@ -870,18 +890,23 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
info.id,
|
info.id,
|
||||||
info.name,
|
info.name,
|
||||||
info.code,
|
info.code,
|
||||||
|
info.caseFilingCode,
|
||||||
|
info.caseFilingResult,
|
||||||
|
info.caseFilingType,
|
||||||
info.researchFindings,
|
info.researchFindings,
|
||||||
info.brief,
|
info.brief,
|
||||||
info.measures,
|
info.measures,
|
||||||
info.createUserName,
|
info.createUserName,
|
||||||
tcde.unitName,
|
tcde.unitName,
|
||||||
tcde.mobile,
|
tcde.mobile,
|
||||||
IF(mer.proposalId IS NOT NULL, '是', '') AS merge,
|
IF(mer.proposalId IS NOT NULL, '是', '否') AS merge,
|
||||||
type.name AS typeName,
|
type.name AS typeName,
|
||||||
tcs.j,
|
tcs.j,
|
||||||
tcs.c,
|
tcs.c,
|
||||||
tcs.fullName AS sessionName,
|
tcs.fullName AS sessionName,
|
||||||
tcd.`name` AS delegationName,
|
tcd.`name` AS delegationName,
|
||||||
|
ins.state AS instanceState,
|
||||||
|
t.displayName AS curTaskName,
|
||||||
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName,
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName,
|
||||||
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames
|
||||||
FROM
|
FROM
|
||||||
@@ -891,6 +916,8 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
||||||
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
||||||
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||||
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||||
|
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||||
LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id
|
LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
@@ -935,6 +962,24 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
Map<String, String> processInstanceStateMap = processInstanceState.stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName));
|
Map<String, String> processInstanceStateMap = processInstanceState.stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName));
|
||||||
|
|
||||||
for (NutMap row : list) {
|
for (NutMap row : list) {
|
||||||
|
String caseFilingResultCode = row.getString("caseFilingResult");
|
||||||
|
String masterUnitName = StrUtil.blankToDefault(row.getString("masterUnitName"), "");
|
||||||
|
String slaveUnitNames = StrUtil.blankToDefault(row.getString("slaveUnitNames"), "");
|
||||||
|
// 自定义导出没有前端单元格渲染,需要按列表相同规则生成承办单位文本。
|
||||||
|
if ("SUGGESTION".equals(caseFilingResultCode)) {
|
||||||
|
row.put("undertakeUnits", StrUtil.isNotBlank(masterUnitName) ? masterUnitName : slaveUnitNames);
|
||||||
|
} else if ("CONFIRM_FILING".equals(caseFilingResultCode)) {
|
||||||
|
List<String> undertakeUnitTexts = new ArrayList<>();
|
||||||
|
if (StrUtil.isNotBlank(masterUnitName)) {
|
||||||
|
undertakeUnitTexts.add("主办:" + masterUnitName);
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(slaveUnitNames)) {
|
||||||
|
undertakeUnitTexts.add("协办:" + slaveUnitNames);
|
||||||
|
}
|
||||||
|
row.put("undertakeUnits", String.join(";", undertakeUnitTexts));
|
||||||
|
} else {
|
||||||
|
row.put("undertakeUnits", "");
|
||||||
|
}
|
||||||
row.put("caseFilingResult", caseFilingResultMap.get(row.getString("caseFilingResult")));
|
row.put("caseFilingResult", caseFilingResultMap.get(row.getString("caseFilingResult")));
|
||||||
row.put("caseFilingType", caseFilingTypeMap.get(row.getString("caseFilingType")));
|
row.put("caseFilingType", caseFilingTypeMap.get(row.getString("caseFilingType")));
|
||||||
row.put("instanceState", processInstanceStateMap.get(row.getString("instanceState")));
|
row.put("instanceState", processInstanceStateMap.get(row.getString("instanceState")));
|
||||||
|
|||||||
@@ -33,7 +33,8 @@ const home = {
|
|||||||
<div class="quick-grid">
|
<div class="quick-grid">
|
||||||
<div class="section-title">推荐服务</div>
|
<div class="section-title">推荐服务</div>
|
||||||
<div class="quick-scroll">
|
<div class="quick-scroll">
|
||||||
<div class="quick-scroll-grid">
|
<div class="quick-scroll-grid"
|
||||||
|
:class="{ 'quick-scroll-grid--single-row': quickEntries.length <= 4 }">
|
||||||
<div class="quick-entry-item"
|
<div class="quick-entry-item"
|
||||||
v-for="item in quickEntries"
|
v-for="item in quickEntries"
|
||||||
@click="menuClick(item)"
|
@click="menuClick(item)"
|
||||||
@@ -594,6 +595,13 @@ const home = {
|
|||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 推荐服务不超过四项时横向排列,避免少量服务按两行纵向展示。 */
|
||||||
|
.quick-scroll-grid--single-row {
|
||||||
|
grid-auto-flow: row;
|
||||||
|
grid-template-rows: 82px;
|
||||||
|
grid-template-columns: repeat(4, 25%);
|
||||||
|
}
|
||||||
|
|
||||||
.quick-entry-item {
|
.quick-entry-item {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
height: 82px;
|
height: 82px;
|
||||||
|
|||||||
Reference in New Issue
Block a user