commit
This commit is contained in:
+58
-13
@@ -187,6 +187,9 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
||||
info.id,
|
||||
info.name,
|
||||
info.code,
|
||||
info.caseFilingCode,
|
||||
info.caseFilingResult,
|
||||
info.caseFilingType,
|
||||
info.researchFindings,
|
||||
info.brief,
|
||||
info.measures,
|
||||
@@ -194,6 +197,10 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
||||
tcde.unitName,
|
||||
tcde.mobile,
|
||||
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.c,
|
||||
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_delegation tcd on tcd.id = info.delegationId
|
||||
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
|
||||
""");
|
||||
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("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief")));
|
||||
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")));
|
||||
|
||||
// 查询附议人信息
|
||||
ProcessTask inviteTask = dao().fetch(ProcessTask.class,
|
||||
Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId())
|
||||
.and(ProcessTask::getTaskName, "=", "invite")
|
||||
.and(ProcessTask::getTaskState, "in",
|
||||
List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode()))
|
||||
.desc(ProcessTask::getCreatedAt));
|
||||
// 历史提案可能没有迁移流程实例,此时仅不导出附议人,避免影响汇总表其他数据。
|
||||
if (instance != null) {
|
||||
// 查询附议人信息
|
||||
ProcessTask inviteTask = dao().fetch(ProcessTask.class,
|
||||
Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId())
|
||||
.and(ProcessTask::getTaskName, "=", "invite")
|
||||
.and(ProcessTask::getTaskState, "in",
|
||||
List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode()))
|
||||
.desc(ProcessTask::getCreatedAt));
|
||||
|
||||
if (inviteTask != null) {
|
||||
NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable());
|
||||
List<NutMap> seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class);
|
||||
if (Lang.isNotEmpty(seconders)) {
|
||||
list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(",")));
|
||||
if (inviteTask != null) {
|
||||
NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable());
|
||||
List<NutMap> seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class);
|
||||
if (Lang.isNotEmpty(seconders)) {
|
||||
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<>();
|
||||
exportEntities.add(new ExcelExportEntity("序号", "index", 10));
|
||||
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("提案案由", "brief", 40));
|
||||
exportEntities.add(new ExcelExportEntity("代表调研情况", "researchFindings", 40));
|
||||
@@ -870,18 +890,23 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
||||
info.id,
|
||||
info.name,
|
||||
info.code,
|
||||
info.caseFilingCode,
|
||||
info.caseFilingResult,
|
||||
info.caseFilingType,
|
||||
info.researchFindings,
|
||||
info.brief,
|
||||
info.measures,
|
||||
info.createUserName,
|
||||
tcde.unitName,
|
||||
tcde.mobile,
|
||||
IF(mer.proposalId IS NOT NULL, '是', '') AS merge,
|
||||
IF(mer.proposalId IS NOT NULL, '是', '否') AS merge,
|
||||
type.name AS typeName,
|
||||
tcs.j,
|
||||
tcs.c,
|
||||
tcs.fullName AS sessionName,
|
||||
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 = 0 THEN pru.unitName END) AS slaveUnitNames
|
||||
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_delegation tcd on tcd.id = info.delegationId
|
||||
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
|
||||
$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));
|
||||
|
||||
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("caseFilingType", caseFilingTypeMap.get(row.getString("caseFilingType")));
|
||||
row.put("instanceState", processInstanceStateMap.get(row.getString("instanceState")));
|
||||
|
||||
@@ -33,7 +33,8 @@ const home = {
|
||||
<div class="quick-grid">
|
||||
<div class="section-title">推荐服务</div>
|
||||
<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"
|
||||
v-for="item in quickEntries"
|
||||
@click="menuClick(item)"
|
||||
@@ -594,6 +595,13 @@ const home = {
|
||||
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 {
|
||||
min-width: 0;
|
||||
height: 82px;
|
||||
|
||||
Reference in New Issue
Block a user