package com.qianwen.smartman.modules.cps.controller; import java.util.List; import java.util.Map; import javax.validation.Valid; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.qianwen.core.excel.util.ExcelUtil; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.oss.model.BladeFile; import com.qianwen.core.scanner.modular.annotation.DeleteResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.annotation.PutResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.secure.BladeUser; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.api.ResultCode; import com.qianwen.core.tool.node.ForestNodeMerger; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.common.cache.RegionCache; import com.qianwen.smartman.common.constant.CommonConstant; import com.qianwen.smartman.common.utils.MessageUtils; import com.qianwen.smartman.modules.cps.convert.CommonGroupConvert; import com.qianwen.smartman.modules.cps.entity.CommonGroup; import com.qianwen.smartman.modules.cps.excel.CommonGroupImport; import com.qianwen.smartman.modules.cps.service.ICommonGroupService; import com.qianwen.smartman.modules.cps.vo.CommonGroupFtpVO; import com.qianwen.smartman.modules.cps.vo.CommonGroupTypeVO; import com.qianwen.smartman.modules.cps.vo.CommonGroupVO; import com.qianwen.smartman.modules.cps.vo.CreateCommonGroupVO; import com.qianwen.smartman.modules.cps.vo.JimuTreeVO; import com.qianwen.smartman.modules.cps.vo.MdcWorkStationGroupVO; import com.qianwen.smartman.modules.cps.vo.TagCommonGroupVO; import com.qianwen.smartman.modules.cps.vo.UpdateCommonGroupVO; import com.qianwen.smartman.modules.cps.vo.WorkstationInGroupVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import springfox.documentation.annotations.ApiIgnore; @ApiResource({"smis/group"}) @Api(value = "组", tags = {"组"}) @RestController public class CommonGroupController { private final ICommonGroupService groupService; public CommonGroupController(ICommonGroupService groupService) { this.groupService = groupService; } @ApiOperationSupport(order = 1) @GetMapping @ApiOperation(value = "详细", notes = "获取组详细") public R detail(@RequestParam @ApiParam(value = "主键", required = true) String id) { CommonGroup group = (CommonGroup) this.groupService.getById(id); CommonGroupVO commonGroup = CommonGroupConvert.INSTANCE.convert(group); return R.data(commonGroup); } @ApiOperationSupport(order = 2) @ApiImplicitParams({@ApiImplicitParam(name = "groupType", value = "组别", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "groupCategory", value = "组子类", paramType = "query", dataType = "int"), @ApiImplicitParam(name = "name", value = "组名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "fullName", value = "组全称", paramType = "query", dataType = "string")}) @ApiOperation(value = "列表", notes = "传入group") @GetMapping({"/list"}) public R> list(@RequestParam @ApiIgnore Map group, BladeUser bladeUser) { QueryWrapper queryWrapper = Condition.getQueryWrapper(group, CommonGroup.class); List list = this.groupService.list(!bladeUser.getTenantId().equals("000000") ? queryWrapper .lambda().eq(CommonGroup::getTenantId, bladeUser.getTenantId()).orderByAsc(CommonGroup::getSort) : queryWrapper .lambda().orderByAsc(CommonGroup::getSort)); List vos = CommonGroupConvert.INSTANCE.convert(list); return R.data(vos); /* Wrapper wrapper; QueryWrapper queryWrapper = Condition.getQueryWrapper(group, CommonGroup.class); ICommonGroupService iCommonGroupService = this.groupService; if (!bladeUser.getTenantId().equals("000000")) { wrapper = (Wrapper) ((LambdaQueryWrapper) queryWrapper.lambda().eq((v0) -> { return v0.getTenantId(); }, bladeUser.getTenantId())).orderByAsc((v0) -> { return v0.getSort(); }); } else { wrapper = (Wrapper) queryWrapper.lambda().orderByAsc((v0) -> { return v0.getSort(); }); } List list = iCommonGroupService.list(wrapper); List vos = CommonGroupConvert.INSTANCE.convert(list); return R.data(vos); */ } @ApiOperationSupport(order = 3) @GetMapping({"/tree"}) @ApiOperation(value = "树形结构", notes = "树形结构") public R> tree(@Validated CommonGroupTypeVO commonGroupTypeVO) { if (commonGroupTypeVO.getStatus() == null) { commonGroupTypeVO.setStatus(CommonConstant.ENABLE); } List list = this.groupService.list(Wrappers.lambdaQuery() .eq(CommonGroup::getGroupType, commonGroupTypeVO.getGroupType()) .eq(CommonGroup::getGroupCategory, commonGroupTypeVO.getGroupCategory()) .eq(CommonGroup::getStatus, commonGroupTypeVO.getStatus()) .orderByDesc(CommonGroup::getSort)); List vos = CommonGroupConvert.INSTANCE.convert(list); return R.data(ForestNodeMerger.merge(vos)); /* if (commonGroupTypeVO.getStatus() == null) { commonGroupTypeVO.setStatus(CommonConstant.ENABLE); } List list = this.groupService.list((Wrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getGroupType(); }, commonGroupTypeVO.getGroupType())).eq((v0) -> { return v0.getGroupCategory(); }, commonGroupTypeVO.getGroupCategory())).eq((v0) -> { return v0.getStatus(); }, commonGroupTypeVO.getStatus())).orderByDesc((v0) -> { return v0.getSort(); })); List vos = CommonGroupConvert.INSTANCE.convert(list); return R.data(ForestNodeMerger.merge(vos)); */ } @ApiOperationSupport(order = 4) @PostResource @ApiOperation(value = "新增", notes = "传入group") @PreAuth public R insert(@Valid @RequestBody CreateCommonGroupVO groupVO) { CommonGroup commonGroup = CommonGroupConvert.INSTANCE.convert(groupVO); this.groupService.insert(commonGroup); CommonGroupVO vo = CommonGroupConvert.INSTANCE.convert(commonGroup); return R.data(vo); } @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL) @PutResource @ApiOperation(value = "修改", notes = "传入group") @PreAuth public R update(@Valid @RequestBody UpdateCommonGroupVO groupVO) { CommonGroup commonGroup = CommonGroupConvert.INSTANCE.convert(groupVO); this.groupService.update(commonGroup); CommonGroupVO vo = CommonGroupConvert.INSTANCE.convert(commonGroup); return R.data(vo); } @ApiOperationSupport(order = 6) @ApiOperation(value = "删除", notes = "删除组") @PreAuth @DeleteResource public R delete(@RequestParam @ApiParam(value = "主键", required = true) String id) { CommonGroup group = (CommonGroup) this.groupService.getById(id); if (null != group) { this.groupService.removeGroup(id); } return R.success(MessageUtils.message("sys.operate.success", new Object[0])); } @PostMapping({"/move"}) @ApiOperationSupport(order = 7) @ApiOperation(value = "移动", notes = "移动组") public R move(@RequestParam @ApiParam(value = "当前组id", required = true) String id, @RequestParam @ApiParam(value = "目标父节点", required = true) String parentId, @RequestParam @ApiParam(value = "组别", required = true) String groupType, @RequestParam @ApiParam(value = "组子类", required = true) Integer groupCategory) { CommonGroup group = (CommonGroup) this.groupService.getById(id); CommonGroup targetGroup = (CommonGroup) this.groupService.getById(parentId); if (Func.isEmpty(group) || Func.isEmpty(targetGroup)) { throw new ServiceException(MessageUtils.message("cps.group.target.is.not.exist", new Object[0])); } this.groupService.move(group.getId(), targetGroup.getId(), groupType, groupCategory); return R.success(MessageUtils.message("sys.operate.success", new Object[0])); } @PostMapping({"/tag"}) @ApiOperationSupport(order = 8) @ApiOperation(value = "设定标签", notes = "标签值来自 group_tag 字典") public R tag(@Valid @RequestBody TagCommonGroupVO tagCommonGroupVO) { CommonGroup group = (CommonGroup) this.groupService.getById(tagCommonGroupVO.getId()); if (Func.isEmpty(group)) { return R.fail(ResultCode.NOT_FOUND); } group.setGroupTag(tagCommonGroupVO.getGroupTag()); this.groupService.update(group); CommonGroupVO result = CommonGroupConvert.INSTANCE.convert(group); return R.data(result); } @ApiOperationSupport(order = 9) @PostResource({"/import"}) @ApiOperation(value = "导入", notes = "导入组") @PreAuth public R importCommonGroup(MultipartFile file, @Validated CommonGroupTypeVO commonGroupTypeVO) { List data = ExcelUtil.read(file, 0, 2, CommonGroupImport.class); return R.data(this.groupService.importCommonGroup(data, commonGroupTypeVO)); } @PostMapping({"/groupWorkstation"}) @ApiOperationSupport(order = 10) @ApiOperation(value = "查询所有组和工位", notes = "查询所有组和工位") public R> groupWorkstationList(@Validated @RequestBody CommonGroupTypeVO commonGroupTypeVO) { return R.data(this.groupService.groupWorkstationList(commonGroupTypeVO)); } @PostMapping({"/groupWorkstation/type"}) @ApiOperationSupport(order = 11) @ApiOperation(value = "查询所有组和工位(机器工位)", notes = "查询所有组和工位") public R> groupWorkstationListType(@Validated @RequestBody CommonGroupTypeVO commonGroupTypeVO) { return R.data(this.groupService.groupWorkstationListType(commonGroupTypeVO)); } @ApiOperationSupport(order = 12) @GetMapping({"/groupWorkstation/lazy"}) @ApiOperation(value = "查询所有组和工位(懒加载)", notes = "查询所有组和工位(懒加载)") public R> groupWorkstationListLazy(@RequestParam Long groupId) { return R.data(this.groupService.groupWorkstationListLazy(groupId)); } @ApiOperationSupport(order = 13) @GetMapping({"/getRootNode"}) @ApiOperation(value = "获取根节点", notes = "获取根节点") public R getRootNode(String groupType, Integer groupCategory) { return R.data(this.groupService.getRootNode(groupType, groupCategory)); } @ApiOperationSupport(order = 14) @GetMapping({"/get-mdc-group"}) @ApiOperation(value = "采集分析实时看板工位组", notes = "采集分析实时看板工位组") public R> getMdcGroup() { return R.data(this.groupService.getMdcGroup()); } @ApiOperationSupport(order = 15) @ApiOperation("删除组后将子移动到默认组") @PreAuth @DeleteResource({"/deleteGroup"}) public R deleteGroup(@RequestParam("groupId") String groupId) { return R.data(this.groupService.deleteGroup(Long.valueOf(groupId))); } @PostMapping({"/groupFtpDirectory/ftp"}) @ApiOperationSupport(order = 16) @ApiOperation(value = "查询未被绑定目录的所有组和工位", notes = "查询所有组和工位") public R> groupFtpDirectoryLazy(@Validated @RequestBody CommonGroupFtpVO commonGroupFtpVO) { return R.data(this.groupService.groupFtpDirectoryWorkstationList(commonGroupFtpVO)); } @ApiOperationSupport(order = 11) @GetMapping({"/groupWorkstation/jimu"}) @ApiOperation(value = "查询所有组和工位(机器工位)-用于积木报表树", notes = "查询所有组和工位-用于积木报表树") public List groupWorkstationListJimu(@RequestParam(name = "pid", required = false) String pid) { return this.groupService.groupWorkstationListJimu(pid); } }