
com.centit.framework.system.controller.UnitInfoController Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of framework-system-web Show documentation
Show all versions of framework-system-web Show documentation
定义了一组和core兼容的表结构,并用mybatis实现了表的增删改查
package com.centit.framework.system.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.centit.framework.common.ResponseData;
import com.centit.framework.common.WebOptUtils;
import com.centit.framework.core.controller.BaseController;
import com.centit.framework.core.controller.WrapUpContentType;
import com.centit.framework.core.controller.WrapUpResponseBody;
import com.centit.framework.core.dao.DictionaryMapUtils;
import com.centit.framework.core.dao.PageQueryResult;
import com.centit.framework.model.adapter.PlatformEnvironment;
import com.centit.framework.operationlog.RecordOperationLog;
import com.centit.framework.system.po.*;
import com.centit.framework.system.service.*;
import com.centit.support.algorithm.CollectionsOpt;
import com.centit.support.algorithm.StringBaseOpt;
import com.centit.support.common.ObjectException;
import com.centit.support.common.ParamName;
import com.centit.support.database.utils.PageDesc;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.*;
/*
* Created with IntelliJ IDEA.
* Date: 14-10-28
* Time: 下午1:32
* 机构管理Controller
*/
@Controller
@RequestMapping("/unitinfo")
@Api(value = "系统机构管理操作接口", tags = "系统机构管理操作接口")
public class UnitInfoController extends BaseController {
@Autowired
@NotNull
private SysUnitManager sysUnitManager;
@Autowired
@NotNull
private SysUserManager sysUserMag;
@Autowired
@NotNull
private SysUserUnitManager sysUserUnitManager;
@Autowired
@NotNull
private SysRoleManager sysRoleManager;
@Autowired
@NotNull
private SysUnitRoleManager sysUnitRoleManager;
@Autowired
private PlatformEnvironment platformEnvironment;
/*
* 系统日志中记录
*
* @return 业务标识ID
*/
public String getOptId() {
return "UNITMAG";
}
/*
* 查询所有机构信息
*
* @param struct 是否需要树形结构
* @param id 父机构ID
* @param request HttpServletRequest
*/
@ApiOperation(value = "查询所有机构信息", notes = "查询所有机构信息。")
@ApiImplicitParams({
@ApiImplicitParam(name = "struct", value = "指需要显示的属性名", paramType = "query", dataType = "Boolean"),
@ApiImplicitParam(name = "id", value = "父机构ID", paramType = "query", dataType = "String")
})
@RequestMapping(method = RequestMethod.GET)
@WrapUpResponseBody
public ResponseData listAsTree(boolean struct, String id, HttpServletRequest request) {
Map searchColumn = BaseController.collectRequestParameters(request);
String unitName = (String) searchColumn.get("unitName");
if (StringUtils.isNotBlank(unitName) && StringUtils.isBlank(id)) {
List listObjects = sysUnitManager.listObjects(searchColumn);
JSONArray ja = DictionaryMapUtils.objectsToJSONArray(listObjects);
if (struct) {
ja = CollectionsOpt.srotAsTreeAndToJSON(ja, (p, c) ->
StringUtils.equals(
((JSONObject) p).getString("unitCode"),
((JSONObject) c).getString("parentUnit")), "children");
}
return ResponseData.makeResponseData(ja);
} else {
if (StringUtils.isNotBlank(id)) {
searchColumn.put("parentUnit", id);
} else {
searchColumn.put("NP_TOPUnit", "true");
}
List listObjects = sysUnitManager.listObjects(searchColumn);
sysUnitManager.checkState(listObjects);
JSONArray ja = DictionaryMapUtils.objectsToJSONArray(listObjects);
return ResponseData.makeResponseData(ja);
}
}
@ApiOperation(value = "分页查询机构信息", notes = "分页查询机构信息。")
@ApiImplicitParam(
name = "pageDesc", value = "json格式的分页信息",
paramType = "body", dataTypeClass = PageDesc.class
)
@RequestMapping(value = "/list", method = RequestMethod.GET)
@WrapUpResponseBody
public PageQueryResult list(PageDesc pageDesc, HttpServletRequest request) {
Map searchColumn = BaseController.collectRequestParameters(request);
List listObjects = sysUnitManager.listObjects(searchColumn, pageDesc);
return PageQueryResult.createResultMapDict(listObjects, pageDesc);
}
/*
* 查询所有子机构信息
*
* @param id String parentUnit 父类机构
* @param request HttpServletRequest
*/
@ApiOperation(value = "查询所有子机构信息", notes = "查询所有子机构信息。")
@ApiImplicitParam(
name = "id", value = "父机构ID",
paramType = "query", dataType = "String")
@RequestMapping(value = "/subunits", method = RequestMethod.GET)
@WrapUpResponseBody
public ResponseData listSub(String id, HttpServletRequest request) {
Map searchColumn = BaseController.collectRequestParameters(request);
String currentUnitCode = WebOptUtils.getCurrentUnitCode(request);
searchColumn.put("parentUnit", StringUtils.isNotBlank(id) ? id : currentUnitCode);
String unitName = StringBaseOpt.castObjectToString(searchColumn.get("unitName"));
if (StringUtils.isNotBlank(unitName)) {
List listObjects = sysUnitManager.listObjects(searchColumn);
JSONArray ja = DictionaryMapUtils.objectsToJSONArray(listObjects);
return ResponseData.makeResponseData(ja);
} else {
List listObjects = sysUnitManager.listAllSubUnits((String) searchColumn.get("parentUnit"));
JSONArray ja = DictionaryMapUtils.objectsToJSONArray(listObjects);
for (Object o : ja) {
((JSONObject) o).put("state", "open");
((JSONObject) o).put("id", ((JSONObject) o).getString("unitCode"));
((JSONObject) o).put("text", ((JSONObject) o).getString("unitName"));
}
ja = CollectionsOpt.srotAsTreeAndToJSON(ja, (p, c) ->
StringUtils.equals(
((JSONObject) p).getString("unitCode"),
((JSONObject) c).getString("parentUnit")), "children");
return ResponseData.makeResponseData(ja);
}
}
/*
* 查询 当前机构 子机构
*/
@ApiOperation(value = "查询 当前机构 子机构", notes = "查询 当前机构 子机构。")
@RequestMapping(value = "/validsubunits", method = RequestMethod.GET)
@WrapUpResponseBody
public ResponseData listValidSubUnit(HttpServletRequest request) {
Map searchColumn = BaseController.collectRequestParameters(request);
String unitName = (String) searchColumn.get("unitName");
String currentUnitCode = WebOptUtils.getCurrentUnitCode(request);
List listObjects = sysUnitManager.listValidSubUnits(currentUnitCode);
JSONArray ja = DictionaryMapUtils.objectsToJSONArray(listObjects);
for (Object o : ja) {
((JSONObject) o).put("state", "open");
((JSONObject) o).put("id", ((JSONObject) o).getString("unitCode"));
((JSONObject) o).put("text", ((JSONObject) o).getString("unitName"));
}
ja = CollectionsOpt.srotAsTreeAndToJSON(ja, (p, c) ->
StringUtils.equals(
((JSONObject) p).getString("unitCode"),
((JSONObject) c).getString("parentUnit")),
"children");
return ResponseData.makeResponseData(ja);
}
/*
* 查询单个机构信息
*
* @param unitCode 机构代码
*/
@ApiOperation(value = "查询单个机构信息", notes = "根据机构ID查询单个机构信息。")
@ApiImplicitParam(
name = "unitCode", value = "机构ID",
paramType = "query", dataType = "String")
@RequestMapping(value = "/{unitCode}", method = RequestMethod.GET)
@WrapUpResponseBody(contentType = WrapUpContentType.MAP_DICT)
public UnitInfo getUnitInfo(@PathVariable String unitCode) {
return sysUnitManager.getObjectById(unitCode);
}
/*
* 删除机构
*
* @param unitCode unitCode
*/
@ApiOperation(value = "删除机构信息", notes = "根据机构ID删除机构信息。")
@ApiImplicitParam(
name = "unitCode", value = "机构ID",
paramType = "query", dataType = "String")
@RequestMapping(value = "/{unitCode}", method = {RequestMethod.DELETE})
@RecordOperationLog(content = "操作IP地址:{loginIp},用户{loginUser.userName}删除机构",
tag="{unitCode}")
@WrapUpResponseBody
public ResponseData delete(@ParamName("unitCode")@PathVariable String unitCode) {
UnitInfo unitInfo = sysUnitManager.getObjectById(unitCode);
if (unitInfo == null) {
return ResponseData.makeErrorMessage("The object not found!");
}
List userUnits = sysUserUnitManager.listUnitUsersByUnitCode(unitCode);
if (userUnits != null && userUnits.size() != 0) {
return ResponseData.makeErrorMessage("该机构存在关联用户,不能删除!");
}
sysUnitManager.deleteUnitInfo(unitInfo);
//删除unitrole关系表
JSONArray unitRoles = sysUnitRoleManager.listUnitRoles(unitCode, new PageDesc());
if (unitRoles != null && unitRoles.size() > 0) {
for (Object obj : unitRoles) {
sysUnitRoleManager.deleteUnitRole(unitCode,
JSONObject.toJavaObject((JSON) DictionaryMapUtils.objectToJSON(obj), UnitRole.class).getRoleCode());
}
}
return ResponseData.successResponse;
/********log*********/
// OperationLogCenter.logDeleteObject(request,optId,unitInfo.getUnitCode(), OperationLog.P_OPT_LOG_METHOD_D,
// "删除机构"+unitInfo.getUnitName(), unitInfo);
/********log*********/
}
/*
* 新建机构
*
* @param unitInfo UnitInfo
*/
@ApiOperation(value = "新建机构", notes = "新建一个机构。")
@ApiImplicitParam(
name = "unitInfo", value = "json格式,机构信息对象",
paramType = "body", dataTypeClass = UnitInfo.class)
@RequestMapping(method = RequestMethod.POST)
@RecordOperationLog(content = "操作IP地址:{loginIp},用户{loginUser.userName}新增机构",
tag="{ui.unitCode}:{ui.unitName}")
@WrapUpResponseBody
public ResponseData create(@ParamName("ui")@Valid UnitInfo unitInfo) {
if (sysUnitManager.hasSameName(unitInfo)) {
return ResponseData.makeErrorMessage(ResponseData.ERROR_FIELD_INPUT_CONFLICT,
"机构名" + unitInfo.getUnitName() + "已存在,请更换!");
}
HashMap map = new HashMap();
map.put("unitWord", unitInfo.getUnitWord());
List unitInfos = sysUnitManager.listObjects(map);
if (unitInfos != null && unitInfos.size() > 0) {
return ResponseData.makeErrorMessage(ResponseData.ERROR_FIELD_INPUT_CONFLICT,
"机构编码" + unitInfo.getUnitName() + "已存在,请更换!");
}
while (!sysUnitManager.isUniqueOrder(unitInfo)) {
unitInfo.setUnitOrder(unitInfo.getUnitOrder() + 1);
}
sysUnitManager.saveNewUnitInfo(unitInfo);
return ResponseData.makeResponseData(unitInfo);
/********log*********/
// OperationLogCenter.logNewObject(request,optId,unitInfo.getUnitCode(),
// OperationLog.P_OPT_LOG_METHOD_C, "新增机构" , unitInfo);
/********log*********/
}
/*
* 新建部门,仅仅是为了区分权限
*
* @param unitInfo UnitInfo
*/
@ApiOperation(value = "新建机构", notes = "新建一个机构。")
@ApiImplicitParam(
name = "unitInfo", value = "json格式,机构信息对象",
paramType = "body", dataTypeClass = UnitInfo.class)
@RequestMapping(value = "department", method = RequestMethod.POST)
@RecordOperationLog(content = "操作IP地址:{loginIp},用户{loginUser.userName}新增机构",
tag="{ui.unitCode}:{ui.unitName}")
@WrapUpResponseBody
public ResponseData createDepartment(@ParamName("ui")@Valid UnitInfo unitInfo, HttpServletRequest request) {
UnitInfo parentUnit = sysUnitManager.getObjectById(unitInfo.getParentUnit());
if(parentUnit == null ||
! StringUtils.contains(parentUnit.getUnitPath(),
WebOptUtils.getCurrentUnitCode(request))){
throw new ObjectException(unitInfo, ResponseData.ERROR_BAD_PROCESS_DATASCOPE,
"用户只能添加其所在部门的下级部门。");
}
return create(unitInfo);
}
/*
* 更新机构信息
*
* @param unitCode 机构代码
* @param unitInfo UnitInfo
*/
@ApiOperation(value = "更新机构信息", notes = "更新机构信息。")
@ApiImplicitParams({
@ApiImplicitParam(
name = "unitCode", value = "机构代码",
paramType = "path", dataType = "String"),
@ApiImplicitParam(
name = "unitInfo", value = "json格式,机构信息对象",
paramType = "body", dataTypeClass = UnitInfo.class)
})
@RequestMapping(value = "/{unitCode}", method = RequestMethod.PUT)
@RecordOperationLog(content = "操作IP地址:{loginIp},用户{loginUser.userName}更新机构",
tag="{unitCode}")
@WrapUpResponseBody
public ResponseData edit(@ParamName("unitCode")@PathVariable String unitCode, @Valid UnitInfo unitInfo) {
UnitInfo dbUnitInfo = sysUnitManager.getObjectById(unitCode);
if (null == dbUnitInfo) {
return ResponseData.makeErrorMessage("机构不存在");
}
if (!dbUnitInfo.getUnitName().equals(unitInfo.getUnitName())&&sysUnitManager.hasSameName(unitInfo)) {
return ResponseData.makeErrorMessage(ResponseData.ERROR_FIELD_INPUT_CONFLICT,
"机构名" + unitInfo.getUnitName() + "已存在,请更换!");
}
HashMap map = new HashMap();
map.put("unitWord", unitInfo.getUnitWord());
List unitInfos = sysUnitManager.listObjects(map);
if (unitInfos != null && unitInfos.size() > 0) {
if (!unitCode.equals(unitInfos.get(0).getUnitCode())) {
return ResponseData.makeErrorMessage(ResponseData.ERROR_FIELD_INPUT_CONFLICT,
"机构编码" + unitInfo.getUnitWord() + "已存在,请更换!");
}
}
if ("F".equals(unitInfo.getIsValid())) {
List units = sysUnitManager.listValidSubUnit(unitCode);
if (units != null && units.size() != 0) {
return ResponseData.makeErrorMessage("该机构包含下级机构,不能设为禁用!");
}
List userUnits = sysUserUnitManager.listUnitUsersByUnitCode(unitCode);
if (userUnits != null && userUnits.size() != 0) {
return ResponseData.makeErrorMessage("该机构存在关联用户,不能设为禁用!");
}
}
sysUnitManager.updateUnitInfo(unitInfo);
return ResponseData.makeResponseData(unitInfo);
/********log*********/
// OperationLogCenter.logUpdateObject(request, optId, unitCode, OperationLog.P_OPT_LOG_METHOD_U,
// "更新机构信息", unitInfo, oldValue);
/********log*********/
}
/*
* 更新机构及子机构的状态
*
* @param unitCode 机构代码
* @param statusValue 状态码 T 或 F
*/
@ApiOperation(value = "更新机构及子机构的状态", notes = "更新机构及子机构的状态。")
@ApiImplicitParams({
@ApiImplicitParam(
name = "unitCode", value = "机构代码",
required = true, paramType = "path", dataType = "String"),
@ApiImplicitParam(
name = "statusValue", value = "状态码 T:可用 或 F:禁用",
required = true, paramType = "path", dataType = "String")
})
@RequestMapping(value = "/{unitCode}/status/{statusValue}", method = RequestMethod.PUT)
@RecordOperationLog(content = "操作IP地址:{loginIp},用户{loginUser.userName}更新机构状态",
tag="{unitCode}")
@WrapUpResponseBody
public ResponseData changeStatus(@ParamName("unitCode")@PathVariable String unitCode, @PathVariable String statusValue) {
UnitInfo dbUnitInfo = sysUnitManager.getObjectById(unitCode);
if (null == dbUnitInfo) {
return ResponseData.makeErrorMessage("机构不存在");
}
if (!"T".equals(statusValue) && !"F".equals(statusValue)) {
return ResponseData.makeErrorMessage("机构状态不正确");
}
sysUnitManager.changeStatus(unitCode, statusValue);
return ResponseData.successResponse;
/********log*********/
// String optContent = "更新机构状态,机构名称:" + CodeRepositoryUtil.getCode(CodeRepositoryUtil.UNIT_CODE, unitCode) + ",机构是否启用:" + ("T".equals
// (statusValue) ? "是" : "否");
// OperationLogCenter.log(request,optId,unitCode, OperationLog.P_OPT_LOG_METHOD_U, optContent);
/********log*********/
}
/*
* 获取单个机构下属子机构
*
* @param field 需要显示的字段
* @param unitCode 机构代码
* @param request HttpServletRequest
*/
@ApiOperation(value = "获取单个机构下属子机构", notes = "获取单个机构下属子机构。")
@ApiImplicitParams({
@ApiImplicitParam(
name = "unitCode", value = "机构代码",
required = true, paramType = "path", dataType = "String"),
@ApiImplicitParam(
name = "field", value = "需要显示的字段",
allowMultiple = true, paramType = "query", dataType = "String")
})
@RequestMapping(value = "/{unitCode}/children", method = RequestMethod.GET)
@WrapUpResponseBody
public JSONArray listChildren(@PathVariable String unitCode, String[] field, HttpServletRequest request) {
Map searchColumn = BaseController.collectRequestParameters(request);
searchColumn.put("parentUnit", unitCode);
List listObjects = sysUnitManager.listObjects(searchColumn);
return DictionaryMapUtils.objectsToJSONArray(listObjects, field);
}
/*
* 当前机构下所有用户
*
* @param pageDesc 分页信息
* @param request HttpServletRequest
*/
@ApiOperation(value = "当前机构下所有用户", notes = "当前机构下所有用户。")
@RequestMapping(value = "/currentunit/users", method = RequestMethod.GET)
@ApiImplicitParam(
name = "pageDesc", value = "json格式,分页对象信息",
paramType = "body", dataTypeClass = PageDesc.class)
@WrapUpResponseBody
public PageQueryResult
© 2015 - 2025 Weber Informatics LLC | Privacy Policy