package org.jeecg.modules.mdc.controller; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor; import org.jeecg.modules.mdc.model.MdcEquipmentTree; import org.jeecg.modules.mdc.service.IMdcEquipmentDepartService; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcProductionEquipmentService; import org.jeecg.modules.mdc.vo.MdcEquipmentVo; import org.jeecg.modules.system.model.DepartIdModel; import org.jeecg.modules.system.model.ProductionIdModel; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @Description: 设备表 * @Author: liuS * @Date: 2023-03-22 * @Version: V1.0 */ @Slf4j @Api(tags = "设备表") @RestController @RequestMapping("/mdc/mdcEquipment") public class MdcEquipmentController extends JeecgController { @Resource private IMdcEquipmentService mdcEquipmentService; @Resource private IMdcEquipmentDepartService mdcEquipmentDepartService; @Resource private IMdcProductionEquipmentService mdcProductionEquipmentService; /** * 分页列表查询 * * @param mdcEquipment * @param pageNo * @param pageSize * @param req * @return */ @AutoLog(value = "设备表-分页列表查询") @ApiOperation(value = "设备表-分页列表查询", notes = "设备表-分页列表查询") @GetMapping(value = "/list") public Result> queryPageList(MdcEquipmentVo mdcEquipment, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { //QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(mdcEquipment, req.getParameterMap()); Page page = new Page(pageNo, pageSize); IPage pageList = mdcEquipmentService.pageList(page, mdcEquipment, req); //批量查询设备的所属部门和产线 //step.1 先拿到全部的 equipmentIds //step.2 通过 equipmentIds,一次性查询设备的所属部门和产线名字 List equipmentIds = pageList.getRecords().stream().map(MdcEquipment::getId).collect(Collectors.toList()); if (equipmentIds != null && !equipmentIds.isEmpty()) { Map equDepNames = mdcEquipmentService.getDepNamesByEquipmentIds(equipmentIds); Map equProNames = mdcEquipmentService.getProNamesByEquipmentIds(equipmentIds); pageList.getRecords().forEach(item -> { item.setOrgCodeTxt(equDepNames.get(item.getId())); item.setProductionName(equProNames.get(item.getId())); }); } return Result.OK(pageList); } /** * 选择设备分页列表 */ @AutoLog(value = "设备表-选择设备分页列表") @ApiOperation(value = "设备表-选择设备分页列表", notes = "设备表-选择设备分页列表") @GetMapping(value = "/findEquipmentList") public Result> findEquipmentList(MdcEquipmentVo mdcEquipment, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); Page page = new Page(pageNo, pageSize); IPage pageList = mdcEquipmentService.findEquipmentList(page, userId, mdcEquipment); return Result.OK(pageList); } /** * 根据用户查询设备列表信息 */ @AutoLog(value = "设备表-根据用户查询设备列表信息") @ApiOperation(value = "设备表-根据用户查询设备列表信息", notes = "设备表-根据用户查询设备列表信息") @GetMapping(value = "/getEquipmentList") public Result> getEquipmentList() { List list = mdcEquipmentService.getEquipmentList(); return Result.OK(list); } /** * 设备监控列表 */ @AutoLog(value = "设备表-设备监控列表") @ApiOperation(value = "设备表-设备监控列表", notes = "设备表-设备监控列表") @GetMapping(value = "/queryEquipmentMonitorList") public Result> queryEquipmentMonitorList(@RequestParam(name = "key", required = false) String key) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); List list = mdcEquipmentService.queryEquipmentMonitorList(userId, key); return Result.OK(list); } @AutoLog(value = "设备表-设备实时详细信息") @ApiOperation(value = "设备表-设备实时详细信息", notes = "设备表-设备实时详细信息") @GetMapping(value = "/mdcEquipmentDetailedInfo") public Result mdcEquipmentDetailedInfo(@RequestParam(name = "id", required = true) String id) { Map result = mdcEquipmentService.mdcEquipmentDetailedInfo(id); return Result.OK(result); } /** * 根据部门查询设备分页列表 */ @AutoLog(value = "设备部门表-根据部门查询设备分页列表") @ApiOperation(value = "设备部门表-根据部门查询设备分页列表", notes = "设备部门表-根据部门查询设备分页列表") @GetMapping(value = "/equipmentListByDepart") public Result> equipmentListByDepart(@RequestParam(name = "departId", required = true) String departId, @RequestParam(name = "equipmentId", required = false) String equipmentId, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { Page page = new Page(pageNo, pageSize); IPage pageList = mdcEquipmentService.pageListByDepId(page, departId, equipmentId); return Result.OK(pageList); } /** * 根据产线查询设备分页列表 */ @AutoLog(value = "设备产线表-根据产线查询设备分页列表") @ApiOperation(value = "设备产线表-根据产线查询设备分页列表", notes = "设备产线表-根据产线查询设备分页列表") @GetMapping(value = "/equipmentListByProduction") public Result> equipmentListByProduction(@RequestParam(name = "productionId", required = true) String productionId, @RequestParam(name = "equipmentId", required = false) String equipmentId, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { Page page = new Page(pageNo, pageSize); IPage pageList = mdcEquipmentService.pageListByProId(page, productionId, equipmentId); return Result.OK(pageList); } /** * 移除部门和设备关系 */ @AutoLog(value = "设备部门表-移除部门和设备关系") @ApiOperation(value = "设备部门表-移除部门和设备关系", notes = "设备部门表-移除部门和设备关系") @PostMapping(value = "/removeEquipmentForDepart") public Result removeEquipmentForDepart(@RequestParam(name = "departId", required = true) String departId, @RequestParam(name = "equipmentId", required = true) String equipmentId) { if (StringUtils.isNotBlank(departId) && StringUtils.isNotBlank(equipmentId)) { mdcEquipmentService.removeEquipmentForDepart(departId, equipmentId); } return Result.OK("移除成功!"); } /** * 批量移除部门和设备关系 */ @AutoLog(value = "设备部门表-批量移除部门和设备关系") @ApiOperation(value = "设备部门表-批量移除部门和设备关系", notes = "设备部门表-批量移除部门和设备关系") @PostMapping(value = "/removeEquipmentsForDepart") public Result removeEquipmentsForDepart(@RequestParam(name = "departId", required = true) String departId, @RequestParam(name = "equipmentIds", required = true) String equipmentIds) { if (StringUtils.isNotBlank(departId) && StringUtils.isNotBlank(equipmentIds)) { List equipmentIdList = Arrays.asList(equipmentIds.split(",")); mdcEquipmentService.removeEquipmentsForDepart(departId, equipmentIdList); } return Result.OK("批量移除成功!"); } /** * 批量移除产线和设备关系 */ @AutoLog(value = "设备产线表-批量移除产线和设备关系") @ApiOperation(value = "设备产线表-批量移除产线和设备关系", notes = "设备产线表-批量移除产线和设备关系") @PostMapping(value = "/removeEquipmentsForProduction") public Result removeEquipmentsForProduction(@RequestParam(name = "productionId", required = true) String productionId, @RequestParam(name = "equipmentIds", required = true) String equipmentIds) { if (StringUtils.isNotBlank(productionId) && StringUtils.isNotBlank(equipmentIds)) { List equipmentIdList = Arrays.asList(equipmentIds.split(",")); mdcEquipmentService.removeEquipmentsForProduction(productionId, equipmentIdList); } return Result.OK("批量移除成功!"); } /** * 移除产线和设备关系 */ @AutoLog(value = "设备产线表-移除产线和设备关系") @ApiOperation(value = "设备产线表-移除产线和设备关系", notes = "设备产线表-移除产线和设备关系") @PostMapping(value = "/removeEquipmentForProduction") public Result removeEquipmentForProduction(@RequestParam(name = "productionId", required = true) String productionId, @RequestParam(name = "equipmentId", required = true) String equipmentId) { if (StringUtils.isNotBlank(productionId) && StringUtils.isNotBlank(equipmentId)) { mdcEquipmentService.removeEquipmentForProduction(productionId, equipmentId); } return Result.OK("移除成功!"); } /** * 添加 * * @param mdcEquipment * @return */ @AutoLog(value = "设备表-添加") @ApiOperation(value = "设备表-添加", notes = "设备表-添加") @PostMapping(value = "/add") public Result add(@RequestBody MdcEquipment mdcEquipment) { Result result = new Result<>(); String selectedDeparts = mdcEquipment.getSelectedDeparts(); String selectedProduction = mdcEquipment.getSelectedProduction(); mdcEquipment.setEquipmentStatus(CommonConstant.STATUS_NORMAL); try { mdcEquipmentService.saveMdcEquipment(mdcEquipment, selectedDeparts, selectedProduction); result.success("添加成功!"); } catch (Exception e) { log.error(e.getMessage(), e); result.error500("操作失败"); } return result; } /** * 编辑 * * @param mdcEquipment * @return */ @AutoLog(value = "设备表-编辑") @ApiOperation(value = "设备表-编辑", notes = "设备表-编辑") @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) public Result edit(@RequestBody MdcEquipment mdcEquipment) { Result result = new Result<>(); try { MdcEquipment mdcEquipment1 = mdcEquipmentService.getById(mdcEquipment.getId()); if (mdcEquipment1 == null) { result.error500("未找到对应实体"); } else { mdcEquipmentService.editMdcEquipment(mdcEquipment); result.success("修改成功!"); } } catch (Exception e) { log.error(e.getMessage(), e); result.error500("操作失败"); } return result; } /** * 通过id删除 * * @param id * @return */ @AutoLog(value = "设备表-通过id删除") @ApiOperation(value = "设备表-通过id删除", notes = "设备表-通过id删除") @DeleteMapping(value = "/delete") public Result delete(@RequestParam(name = "id", required = true) String id) { if (StringUtils.isNotBlank(id)) { mdcEquipmentService.deleteById(id); } return Result.OK("删除成功!"); } /** * 批量删除 * * @param ids * @return */ @AutoLog(value = "设备表-批量删除") @ApiOperation(value = "设备表-批量删除", notes = "设备表-批量删除") @DeleteMapping(value = "/deleteBatch") public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { if (StringUtils.isNotBlank(ids)) { this.mdcEquipmentService.deleteByIds(Arrays.asList(ids.split(","))); } return Result.OK("批量删除成功!"); } /** * 通过id查询 * * @param id * @return */ @AutoLog(value = "设备表-通过id查询") @ApiOperation(value = "设备表-通过id查询", notes = "设备表-通过id查询") @GetMapping(value = "/queryById") public Result queryById(@RequestParam(name = "id", required = true) String id) { Result result = new Result<>(); MdcEquipment mdcEquipment = mdcEquipmentService.getById(id); if (mdcEquipment == null) { result.error500("未找到对应实体!"); } else { result.setResult(mdcEquipment); result.setSuccess(true); } return result; } /** * 查询指定设备和部门关联的数据 */ @AutoLog(value = "设备表-查询指定设备和部门关联的数据") @ApiOperation(value = "设备表-查询指定设备和部门关联的数据", notes = "设备表-查询指定设备和部门关联的数据") @GetMapping(value = "/equipmentDepartList") public Result> getEquipmentDepartList(@RequestParam(name = "equipmentId", required = true) String equipmentId) { Result> result = new Result<>(); try { List depIdModelList = this.mdcEquipmentDepartService.queryDepartIdsOfEquipment(equipmentId); if (depIdModelList != null && !depIdModelList.isEmpty()) { result.setSuccess(true); result.setMessage("查找成功"); result.setResult(depIdModelList); } else { result.setSuccess(false); result.setMessage("查找失败"); } return result; } catch (Exception e) { log.error(e.getMessage(), e); result.setSuccess(false); result.setMessage("查找过程中出现了异常: " + e.getMessage()); return result; } } /** * 查询指定设备和产线关联的数据 */ @AutoLog(value = "设备表-查询指定设备和产线关联的数据") @ApiOperation(value = "设备表-查询指定设备和产线关联的数据", notes = "设备表-查询指定设备和产线关联的数据") @GetMapping(value = "/equipmentProductionList") public Result> getEquipmentProductionList(@RequestParam(name = "equipmentId", required = true) String equipmentId) { Result> result = new Result<>(); try { List proIdModelList = this.mdcProductionEquipmentService.queryProductionIdsOfEquipment(equipmentId); if (proIdModelList != null && !proIdModelList.isEmpty()) { result.setSuccess(true); result.setMessage("查找成功"); result.setResult(proIdModelList); } else { result.setSuccess(false); result.setMessage("查找失败"); } return result; } catch (Exception e) { log.error(e.getMessage(), e); result.setSuccess(false); result.setMessage("查找过程中出现了异常: " + e.getMessage()); return result; } } /** * 加载部门设备树 */ @AutoLog(value = "设备表-加载部门设备树") @ApiOperation(value = "设备表-加载部门设备树", notes = "设备表-加载部门设备树") @GetMapping(value = "/queryTreeListByDepart") public Result> queryTreeListByDepart() { Result> result = new Result<>(); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); try { List mdcEquipmentTreeList = mdcEquipmentService.loadTreeListByDepart(userId); result.setSuccess(true); result.setResult(mdcEquipmentTreeList); } catch (Exception e) { log.error(e.getMessage(), e); } return result; } /** * 加载产线设备树 */ @AutoLog(value = "设备表-加载产线设备树") @ApiOperation(value = "设备表-加载产线设备树", notes = "设备表-加载产线设备树") @GetMapping(value = "/queryTreeListByProduction") public Result> queryTreeListByProduction() { Result> result = new Result<>(); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); try { List mdcEquipmentTreeList = mdcEquipmentService.loadTreeListByProduction(userId); result.setSuccess(true); result.setResult(mdcEquipmentTreeList); } catch (Exception e) { log.error(e.getMessage(), e); } return result; } /** * 导出excel * * @param request * @param mdcEquipment */ @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, MdcEquipmentVo mdcEquipment) { // Step.1 组装查询条件 //QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(mdcEquipment, request.getParameterMap()); //Step.2 AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); List pageList = mdcEquipmentService.exportXlsList(mdcEquipment); List equipmentIds = pageList.stream().map(MdcEquipment::getId).collect(Collectors.toList()); if (!equipmentIds.isEmpty()) { Map equDepNames = mdcEquipmentService.getDepNamesByEquipmentIds(equipmentIds); Map equProNames = mdcEquipmentService.getProNamesByEquipmentIds(equipmentIds); pageList.forEach(item -> { item.setOrgCodeTxt(equDepNames.get(item.getId())); item.setProductionName(equProNames.get(item.getId())); }); } mv.addObject(NormalExcelConstants.FILE_NAME, "设备列表"); mv.addObject(NormalExcelConstants.CLASS, MdcEquipment.class); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); ExportParams exportParams = new ExportParams("设备列表数据", "导出人:" + user.getRealname(), "导出信息"); // exportParams.setImageBasePath(upLoadPath); mv.addObject(NormalExcelConstants.PARAMS, exportParams); mv.addObject(NormalExcelConstants.DATA_LIST, pageList); return mv; } /** * 通过excel导入数据 * * @param request * @param response * @return */ @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, MdcEquipment.class); } /** * 根据产线层级查询单个设备 * * @param pid * @return */ @AutoLog(value = "设备表-根据产线层级查询单个设备") @ApiOperation(value = "设备表-根据产线层级查询单个设备", notes = "设备表-根据产线层级查询单个设备") @GetMapping("/getEquipmentByPid") public Result getEquipmentByPid(@RequestParam(name = "pid", required = false) String pid) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); MdcEquipment mdcEquipment = mdcEquipmentService.getEquipmentByPid(pid, userId); return Result.OK(mdcEquipment); } /** * 根据部门层级查询单个设备 * * @param pid * @return */ @AutoLog(value = "设备表-根据部门层级查询单个设备") @ApiOperation(value = "设备表-根据部门层级查询单个设备", notes = "设备表-根据部门层级查询单个设备") @GetMapping("/getEquipmentByDepPid") public Result getEquipmentByDepPid(@RequestParam(name = "pid", required = false) String pid) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); MdcEquipment mdcEquipment = mdcEquipmentService.getEquipmentByDepPid(pid, userId); return Result.OK(mdcEquipment); } /** * 手动上报设备异常及说明 * @return */ @AutoLog(value = "设备表-手动上报设备异常及说明") @ApiOperation(value = "设备表-手动上报设备异常及说明", notes = "设备表-手动上报设备异常及说明") @GetMapping("/updateEquipmentStatus") public Result updateEquipmentStatus(@RequestParam(name = "id", required = true) String id) { Result result = new Result<>(); try { MdcEquipment mdcEquipment1 = mdcEquipmentService.getById(id); if (mdcEquipment1 == null) { result.error500("未找到对应实体"); } else { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper(); updateWrapper.eq(MdcEquipment::getId, id); if (CommonConstant.STATUS_NORMAL.equals(mdcEquipment1.getEquipmentStatus())) { updateWrapper.set(MdcEquipment::getEquipmentStatus, CommonConstant.STATUS_DISABLE); } else { updateWrapper.set(MdcEquipment::getEquipmentStatus, CommonConstant.STATUS_NORMAL); } mdcEquipmentService.update(updateWrapper); result.success("反馈成功!"); } } catch (Exception e) { log.error(e.getMessage(), e); result.error500("操作失败"); } return Result.OK("反馈成功!"); } @AutoLog(value = "设备表-通过车间ids获取设备树") @ApiOperation(value = "设备表-通过车间ids获取设备树", notes = "设备表-通过车间ids获取设备树") @GetMapping(value = "/loadTreeListByProductionIds") public Result loadTreeListByProductionIds(@RequestParam(name = "ids", required = true) String ids) { Result> result = new Result<>(); try { List mdcEquipmentTreeList = mdcEquipmentService.loadTreeListByProductionIds(ids); result.setSuccess(true); result.setResult(mdcEquipmentTreeList); } catch (Exception e) { log.error(e.getMessage(), e); } return result; } }