yxk-20260601-所务会台账及发起流程
This commit is contained in:
+40
-7
@@ -40,6 +40,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import org.apache.shiro.authz.annotation.Logical;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
/**
|
/**
|
||||||
* @Description: 党委会
|
* @Description: 党委会
|
||||||
@@ -53,6 +54,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class BgPartymatterController extends JeecgController<BgPartymatter, IBgPartymatterService> {
|
public class BgPartymatterController extends JeecgController<BgPartymatter, IBgPartymatterService> {
|
||||||
|
|
||||||
|
private static final String DEFAULT_MEETING_TYPE = "party";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBgPartymatterService bgPartymatterService;
|
private IBgPartymatterService bgPartymatterService;
|
||||||
|
|
||||||
@@ -101,12 +104,13 @@ public class BgPartymatterController extends JeecgController<BgPartymatter, IBgP
|
|||||||
*/
|
*/
|
||||||
@AutoLog(value = "党委会-添加")
|
@AutoLog(value = "党委会-添加")
|
||||||
@Operation(summary="党委会-添加")
|
@Operation(summary="党委会-添加")
|
||||||
@RequiresPermissions("bgpartymatter:bg_partymatter:add")
|
@RequiresPermissions(value = {"bgpartymatter:bg_partymatter:add", "bgofficematter:bg_officematter:add"}, logical = Logical.OR)
|
||||||
@PostMapping(value = "/add")
|
@PostMapping(value = "/add")
|
||||||
public Result<String> add(@RequestBody BgPartymatter bgPartymatter) {
|
public Result<String> add(@RequestBody BgPartymatter bgPartymatter) {
|
||||||
if (oConvertUtils.isEmpty(bgPartymatter.getDelFlag())) {
|
if (oConvertUtils.isEmpty(bgPartymatter.getDelFlag())) {
|
||||||
bgPartymatter.setDelFlag("0");
|
bgPartymatter.setDelFlag("0");
|
||||||
}
|
}
|
||||||
|
fillDefaultMeetingTypeForCreate(bgPartymatter);
|
||||||
fillGeneratedNumber(bgPartymatter);
|
fillGeneratedNumber(bgPartymatter);
|
||||||
bgPartymatterService.save(bgPartymatter);
|
bgPartymatterService.save(bgPartymatter);
|
||||||
return Result.OK("添加成功!");
|
return Result.OK("添加成功!");
|
||||||
@@ -119,9 +123,10 @@ public class BgPartymatterController extends JeecgController<BgPartymatter, IBgP
|
|||||||
*/
|
*/
|
||||||
@AutoLog(value = "党委会-编辑")
|
@AutoLog(value = "党委会-编辑")
|
||||||
@Operation(summary="党委会-编辑")
|
@Operation(summary="党委会-编辑")
|
||||||
@RequiresPermissions("bgpartymatter:bg_partymatter:edit")
|
@RequiresPermissions(value = {"bgpartymatter:bg_partymatter:edit", "bgofficematter:bg_officematter:edit"}, logical = Logical.OR)
|
||||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||||
public Result<String> edit(@RequestBody BgPartymatter bgPartymatter) {
|
public Result<String> edit(@RequestBody BgPartymatter bgPartymatter) {
|
||||||
|
fillMeetingTypeForUpdate(bgPartymatter);
|
||||||
fillGeneratedNumber(bgPartymatter);
|
fillGeneratedNumber(bgPartymatter);
|
||||||
bgPartymatterService.updateById(bgPartymatter);
|
bgPartymatterService.updateById(bgPartymatter);
|
||||||
return Result.OK("编辑成功!");
|
return Result.OK("编辑成功!");
|
||||||
@@ -142,12 +147,39 @@ public class BgPartymatterController extends JeecgController<BgPartymatter, IBgP
|
|||||||
return Result.error("流程实例ID不能为空");
|
return Result.error("流程实例ID不能为空");
|
||||||
}
|
}
|
||||||
String varField = oConvertUtils.isEmpty(dto.getVarField()) ? "json_data" : dto.getVarField();
|
String varField = oConvertUtils.isEmpty(dto.getVarField()) ? "json_data" : dto.getVarField();
|
||||||
|
fillMeetingTypeForUpdate(dto.getFormData());
|
||||||
fillGeneratedNumber(dto.getFormData());
|
fillGeneratedNumber(dto.getFormData());
|
||||||
bgPartymatterService.updateById(dto.getFormData());
|
bgPartymatterService.updateById(dto.getFormData());
|
||||||
runtimeService.setVariable(dto.getProcessInstanceId(), varField, JSONObject.toJSONString(dto.getFormData()));
|
runtimeService.setVariable(dto.getProcessInstanceId(), varField, JSONObject.toJSONString(dto.getFormData()));
|
||||||
return Result.OK("保存成功");
|
return Result.OK("保存成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增入口没有会议类型时默认归入党委会,兼容旧页面和直接接口调用。
|
||||||
|
*/
|
||||||
|
private void fillDefaultMeetingTypeForCreate(BgPartymatter bgPartymatter) {
|
||||||
|
if (bgPartymatter != null && oConvertUtils.isEmpty(bgPartymatter.getMeetingType())) {
|
||||||
|
bgPartymatter.setMeetingType(DEFAULT_MEETING_TYPE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部分字段更新不传 meetingType 时沿用数据库原值,避免所务会被默认值覆盖为党委会。
|
||||||
|
*/
|
||||||
|
private void fillMeetingTypeForUpdate(BgPartymatter bgPartymatter) {
|
||||||
|
if (bgPartymatter == null || oConvertUtils.isNotEmpty(bgPartymatter.getMeetingType())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (oConvertUtils.isNotEmpty(bgPartymatter.getId())) {
|
||||||
|
BgPartymatter oldData = bgPartymatterService.getById(bgPartymatter.getId());
|
||||||
|
if (oldData != null && oConvertUtils.isNotEmpty(oldData.getMeetingType())) {
|
||||||
|
bgPartymatter.setMeetingType(oldData.getMeetingType());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bgPartymatter.setMeetingType(DEFAULT_MEETING_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据会议时间和议题序号生成业务序号,规则:yyyyMMdd-议题序号。
|
* 根据会议时间和议题序号生成业务序号,规则:yyyyMMdd-议题序号。
|
||||||
* 前端会即时回显,后端保存前再次生成,保证接口调用和流程保存数据一致。
|
* 前端会即时回显,后端保存前再次生成,保证接口调用和流程保存数据一致。
|
||||||
@@ -167,7 +199,7 @@ public class BgPartymatterController extends JeecgController<BgPartymatter, IBgP
|
|||||||
*/
|
*/
|
||||||
@AutoLog(value = "党委会-通过id删除")
|
@AutoLog(value = "党委会-通过id删除")
|
||||||
@Operation(summary="党委会-通过id删除")
|
@Operation(summary="党委会-通过id删除")
|
||||||
@RequiresPermissions("bgpartymatter:bg_partymatter:delete")
|
@RequiresPermissions(value = {"bgpartymatter:bg_partymatter:delete", "bgofficematter:bg_officematter:delete"}, logical = Logical.OR)
|
||||||
@DeleteMapping(value = "/delete")
|
@DeleteMapping(value = "/delete")
|
||||||
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
||||||
bgPartymatterService.delMain(id);
|
bgPartymatterService.delMain(id);
|
||||||
@@ -181,7 +213,7 @@ public class BgPartymatterController extends JeecgController<BgPartymatter, IBgP
|
|||||||
*/
|
*/
|
||||||
@AutoLog(value = "党委会-批量删除")
|
@AutoLog(value = "党委会-批量删除")
|
||||||
@Operation(summary="党委会-批量删除")
|
@Operation(summary="党委会-批量删除")
|
||||||
@RequiresPermissions("bgpartymatter:bg_partymatter:deleteBatch")
|
@RequiresPermissions(value = {"bgpartymatter:bg_partymatter:deleteBatch", "bgofficematter:bg_officematter:deleteBatch"}, logical = Logical.OR)
|
||||||
@DeleteMapping(value = "/deleteBatch")
|
@DeleteMapping(value = "/deleteBatch")
|
||||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||||
this.bgPartymatterService.delBatchMain(Arrays.asList(ids.split(",")));
|
this.bgPartymatterService.delBatchMain(Arrays.asList(ids.split(",")));
|
||||||
@@ -192,17 +224,18 @@ public class BgPartymatterController extends JeecgController<BgPartymatter, IBgP
|
|||||||
* 导出
|
* 导出
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@RequiresPermissions("bgpartymatter:bg_partymatter:exportXls")
|
@RequiresPermissions(value = {"bgpartymatter:bg_partymatter:exportXls", "bgofficematter:bg_officematter:exportXls"}, logical = Logical.OR)
|
||||||
@RequestMapping(value = "/exportXls")
|
@RequestMapping(value = "/exportXls")
|
||||||
public ModelAndView exportXls(HttpServletRequest request, BgPartymatter bgPartymatter) {
|
public ModelAndView exportXls(HttpServletRequest request, BgPartymatter bgPartymatter) {
|
||||||
return super.exportXls(request, bgPartymatter, BgPartymatter.class, "党委会");
|
String exportName = "office".equals(bgPartymatter.getMeetingType()) ? "所务会" : "党委会";
|
||||||
|
return super.exportXls(request, bgPartymatter, BgPartymatter.class, exportName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入
|
* 导入
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@RequiresPermissions("bgpartymatter:bg_partymatter:importExcel")
|
@RequiresPermissions(value = {"bgpartymatter:bg_partymatter:importExcel", "bgofficematter:bg_officematter:importExcel"}, logical = Logical.OR)
|
||||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||||
return super.importExcel(request, response, BgPartymatter.class);
|
return super.importExcel(request, response, BgPartymatter.class);
|
||||||
|
|||||||
+4
@@ -57,6 +57,10 @@ public class BgPartymatter implements Serializable {
|
|||||||
@Excel(name = "年份", width = 15)
|
@Excel(name = "年份", width = 15)
|
||||||
@Schema(description = "年份")
|
@Schema(description = "年份")
|
||||||
private java.lang.String year;
|
private java.lang.String year;
|
||||||
|
/**会议类型*/
|
||||||
|
@Schema(description = "会议类型:party党委会,office所务会")
|
||||||
|
@TableField("meeting_type")
|
||||||
|
private java.lang.String meetingType;
|
||||||
/**密级*/
|
/**密级*/
|
||||||
@Excel(name = "密级", width = 15)
|
@Excel(name = "密级", width = 15)
|
||||||
@Dict(dicCode = "secret_level")
|
@Dict(dicCode = "secret_level")
|
||||||
|
|||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
-- 所务会台账:党委会和所务会共用 bg_partymatter,通过 meeting_type 隔离数据。
|
||||||
|
SET @add_meeting_type_sql = IF(
|
||||||
|
(SELECT COUNT(1)
|
||||||
|
FROM information_schema.columns
|
||||||
|
WHERE table_schema = DATABASE()
|
||||||
|
AND table_name = 'bg_partymatter'
|
||||||
|
AND column_name = 'meeting_type') = 0,
|
||||||
|
'ALTER TABLE `bg_partymatter` ADD COLUMN `meeting_type` varchar(20) DEFAULT ''party'' COMMENT ''会议类型:party党委会,office所务会''',
|
||||||
|
'SELECT 1'
|
||||||
|
);
|
||||||
|
PREPARE add_meeting_type_stmt FROM @add_meeting_type_sql;
|
||||||
|
EXECUTE add_meeting_type_stmt;
|
||||||
|
DEALLOCATE PREPARE add_meeting_type_stmt;
|
||||||
|
|
||||||
|
UPDATE `bg_partymatter`
|
||||||
|
SET `meeting_type` = 'party'
|
||||||
|
WHERE `meeting_type` IS NULL OR `meeting_type` = '';
|
||||||
|
|
||||||
|
-- 所务会菜单
|
||||||
|
INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
|
||||||
|
VALUES ('2026052900010000000', NULL, '所务会', '/bg/bgpartymatter/bgOfficematterList', 'bg/bgpartymatter/BgOfficematterList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0);
|
||||||
|
|
||||||
|
-- 所务会权限控制
|
||||||
|
INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
|
||||||
|
VALUES ('2026052900010000001', '2026052900010000000', '添加所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0);
|
||||||
|
|
||||||
|
INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
|
||||||
|
VALUES ('2026052900010000002', '2026052900010000000', '编辑所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0);
|
||||||
|
|
||||||
|
INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
|
||||||
|
VALUES ('2026052900010000003', '2026052900010000000', '删除所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0);
|
||||||
|
|
||||||
|
INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
|
||||||
|
VALUES ('2026052900010000004', '2026052900010000000', '批量删除所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0);
|
||||||
|
|
||||||
|
INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
|
||||||
|
VALUES ('2026052900010000005', '2026052900010000000', '导出excel_所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0);
|
||||||
|
|
||||||
|
INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
|
||||||
|
VALUES ('2026052900010000006', '2026052900010000000', '导入excel_所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0);
|
||||||
Reference in New Issue
Block a user