package org.jeecg.modules.eam.controller; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.query.QueryGenerator; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import java.util.ArrayList; import java.util.Arrays; import org.jeecg.common.util.oConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; import org.apache.shiro.SecurityUtils; import org.jeecg.common.system.vo.LoginUser; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @Description: 保养计划 * @Author: jeecg-boot * @Date: 2023-10-16 * @Version: V1.0 */ @Api(tags="保养计划") @RestController @RequestMapping("/eam/equipmentMaintenancePlan") @Slf4j public class EquipmentMaintenancePlanController extends JeecgController { @Autowired private IEquipmentMaintenancePlanService equipmentMaintenancePlanService; @Autowired private IEquipmentMaintenancePlanDetailService equipmentMaintenancePlanDetailService; @Autowired private IDailyMaintenanceOrderService dailyMaintenanceOrderService; @Autowired private IEamEquipmentService equipmentService; @Autowired private IMaintenanceStandardService maintenanceStandardService; @Autowired private IdentityService sysIdentityService; @Autowired private ISysBaseAPI sysBaseApi; @Autowired private IDailyMaintenanceOrderDetailService maintenanceOrderDetailService; @Autowired private IMaintenanceStandardDetailService maintenanceStandardDetailService; /*---------------------------------主表处理-begin-------------------------------------*/ /** * 分页列表查询 * @param equipmentMaintenancePlan * @param pageNo * @param pageSize * @param req * @return */ //@AutoLog(value = "保养计划-分页列表查询") @ApiOperation(value="保养计划-分页列表查询", notes="保养计划-分页列表查询") @GetMapping(value = "/list") public Result> queryPageList(EquipmentMaintenancePlan equipmentMaintenancePlan, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(equipmentMaintenancePlan, req.getParameterMap()); //按创建时间范围查询,从前端接收两个参数,beginTime和endTime String beginTime = req.getParameter("beginTime"); String endTime = req.getParameter("endTime"); if(oConvertUtils.isNotEmpty(beginTime) && oConvertUtils.isNotEmpty(endTime)){ queryWrapper.between("create_time",beginTime,endTime); } Page page = new Page(pageNo, pageSize); IPage pageList = equipmentMaintenancePlanService.page(page, queryWrapper); return Result.OK(pageList); } /** * 添加 * @param equipmentMaintenancePlan * @return */ @AutoLog(value = "保养计划-添加") @ApiOperation(value="保养计划-添加", notes="保养计划-添加") @PostMapping(value = "/add") @Transactional(rollbackFor = {Exception.class}) public Result add(@RequestBody EquipmentMaintenancePlan equipmentMaintenancePlan) { //判断selectOption类型 equipmentMaintenancePlan.setStatus("created"); equipmentMaintenancePlan.setDelFlag(CommonConstant.DEL_FLAG_0); if(equipmentMaintenancePlan.getSelectOption().equals("0")){ //查询所有设备并将其id封装成idList List equipments = equipmentService.list(); List idList = equipments.stream().map(Equipment::getId).collect(Collectors.toList()); //根据idList和type查询所有设备的保养标准 Map maintenanceStandards = equipmentMaintenancePlanService.getStandards(idList,equipmentMaintenancePlan.getType()); List maintenanceStandardList = (List) maintenanceStandards.get("records"); //循环maintenanceStandardList将数据封装到equipmentMaintenancePlanDetailList List equipmentMaintenancePlanDetailList = new ArrayList<>(); equipmentMaintenancePlan.setEquipNo(maintenanceStandardList.size()); equipmentMaintenancePlanService.save(equipmentMaintenancePlan); for(MaintenanceStandard maintenanceStandard:maintenanceStandardList){ EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail = new EquipmentMaintenancePlanDetail(); equipmentMaintenancePlanDetail.setStandardNum(maintenanceStandard.getNum()); equipmentMaintenancePlanDetail.setEquipmentName(maintenanceStandard.getEquipmentName()); equipmentMaintenancePlanDetail.setEquipmentId(maintenanceStandard.getEquipmentId()); equipmentMaintenancePlanDetail.setEquipmentNum(maintenanceStandard.getEquipmentNum()); equipmentMaintenancePlanDetail.setModel(maintenanceStandard.getEquipmentModel()); equipmentMaintenancePlanDetail.setStandardId(maintenanceStandard.getId()); equipmentMaintenancePlanDetail.setPlanId(equipmentMaintenancePlan.getId()); equipmentMaintenancePlanDetail.setPlanStartTime(equipmentMaintenancePlan.getBeginTime()); equipmentMaintenancePlanDetail.setPlanEndTime(equipmentMaintenancePlan.getEndTime()); equipmentMaintenancePlanDetailList.add(equipmentMaintenancePlanDetail); } equipmentMaintenancePlanDetailService.saveBatch(equipmentMaintenancePlanDetailList); } else{ List equipmentMaintenancePlanDetails = equipmentMaintenancePlan.getEquipmentMaintenancePlanDetailList(); equipmentMaintenancePlan.setEquipNo(equipmentMaintenancePlanDetails.size()); equipmentMaintenancePlanService.save(equipmentMaintenancePlan); for(EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail:equipmentMaintenancePlanDetails){ equipmentMaintenancePlanDetail.setPlanId(equipmentMaintenancePlan.getId()); } equipmentMaintenancePlanDetailService.saveBatch(equipmentMaintenancePlanDetails); } return Result.OK("添加成功!"); } /** * 编辑 * @param equipmentMaintenancePlan * @return */ @AutoLog(value = "保养计划-编辑") @ApiOperation(value="保养计划-编辑", notes="保养计划-编辑") //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_equipment_maintenance_plan:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) @Transactional(rollbackFor = {Exception.class}) public Result edit(@RequestBody EquipmentMaintenancePlan equipmentMaintenancePlan) { equipmentMaintenancePlanDetailService.remove(new QueryWrapper().eq("plan_id",equipmentMaintenancePlan.getId())); List equipmentMaintenancePlanDetails = equipmentMaintenancePlan.getEquipmentMaintenancePlanDetailList(); equipmentMaintenancePlan.setEquipNo(equipmentMaintenancePlanDetails.size()); equipmentMaintenancePlanService.updateById(equipmentMaintenancePlan); for(EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail:equipmentMaintenancePlanDetails){ equipmentMaintenancePlanDetail.setPlanId(equipmentMaintenancePlan.getId()); } equipmentMaintenancePlanDetailService.saveBatch(equipmentMaintenancePlanDetails); return Result.OK("编辑成功!"); } /** * 通过id删除 * @param id * @return */ @AutoLog(value = "保养计划-通过id删除") @ApiOperation(value="保养计划-通过id删除", notes="保养计划-通过id删除") //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_equipment_maintenance_plan:delete") @DeleteMapping(value = "/delete") @Transactional(rollbackFor = {Exception.class}) public Result delete(@RequestParam(name="id",required=true) String id) { equipmentMaintenancePlanDetailService.remove(new QueryWrapper().eq("plan_id",id)); equipmentMaintenancePlanService.delMain(id); return Result.OK("删除成功!"); } /** * 批量删除 * @param ids * @return */ @AutoLog(value = "保养计划-批量删除") @ApiOperation(value="保养计划-批量删除", notes="保养计划-批量删除") //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_equipment_maintenance_plan:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.equipmentMaintenancePlanService.delBatchMain(Arrays.asList(ids.split(","))); return Result.OK("批量删除成功!"); } /** * 导出 * @return */ //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_equipment_maintenance_plan:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, EquipmentMaintenancePlan equipmentMaintenancePlan) { return super.exportXls(request, equipmentMaintenancePlan, EquipmentMaintenancePlan.class, "保养计划"); } /** * 导入 * @return */ //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_equipment_maintenance_plan:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, EquipmentMaintenancePlan.class); } /*---------------------------------主表处理-end-------------------------------------*/ @PutMapping("submit") public Result submit(@RequestBody EquipmentMaintenancePlan equipmentMaintenancePlan) { equipmentMaintenancePlan.setStatus("submitted"); equipmentMaintenancePlanService.updateById(equipmentMaintenancePlan); return Result.OK("操作成功"); } @PutMapping("audit") public Result audit(@RequestBody EquipmentMaintenancePlan equipmentMaintenancePlan) { equipmentMaintenancePlan.setStatus("passed"); equipmentMaintenancePlanService.updateById(equipmentMaintenancePlan); return Result.OK("操作成功"); } @PutMapping("reject") public Result reject(@RequestBody EquipmentMaintenancePlan equipmentMaintenancePlan) { equipmentMaintenancePlan.setStatus("rejected"); equipmentMaintenancePlanService.updateById(equipmentMaintenancePlan); return Result.OK("操作成功"); } @PutMapping("distrbute") public Result distrbute(@RequestBody EquipmentMaintenancePlan equipmentMaintenancePlan) { LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); equipmentMaintenancePlan.setStatus("distributed"); //生成工单 List equipmentMaintenancePlanDetails = equipmentMaintenancePlanDetailService.selectByMainId(equipmentMaintenancePlan.getId()); for(EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail:equipmentMaintenancePlanDetails){ MaintenanceStandard maintenanceStandard = maintenanceStandardService.getById(equipmentMaintenancePlanDetail.getStandardId()); String num = sysIdentityService.getNumByTypeAndLength("MaintenanceOrder",4); DailyMaintenanceOrder dailyMaintenanceOrder = new DailyMaintenanceOrder(); dailyMaintenanceOrder.setNum(num); dailyMaintenanceOrder.setEquipmentId(maintenanceStandard.getEquipmentId()); dailyMaintenanceOrder.setPlanStartTime(equipmentMaintenancePlanDetail.getPlanStartTime()); dailyMaintenanceOrder.setPlanEndTime(equipmentMaintenancePlanDetail.getPlanEndTime()); dailyMaintenanceOrder.setStatus("3");//3:未开始 dailyMaintenanceOrder.setMaintenanceStandardId(maintenanceStandard.getId()); dailyMaintenanceOrder.setCreateType(CommonConstant.ANNOUNCEMENT_SEND_STATUS_2); List maintenanceStandardDetailList = equipmentMaintenancePlanService.getCycle(maintenanceStandard.getId(),equipmentMaintenancePlan.getType()); if(maintenanceStandardDetailList.size()>0){ dailyMaintenanceOrder.setMaintenanceCycleId(maintenanceStandardDetailList.get(0).getMaintenanceCycleId()); } dailyMaintenanceOrder.setMaintenanceOrderUda1(equipmentMaintenancePlan.getId()); dailyMaintenanceOrder.setMaintenanceOrderUda2(equipmentMaintenancePlanDetail.getId()); dailyMaintenanceOrder.setDelFlag(CommonConstant.DEL_FLAG_0); dailyMaintenanceOrder.setPrecisionInspectionStatus(CommonConstant.STATUS_0); dailyMaintenanceOrder.setStoveExemptStatus(CommonConstant.STATUS_0); dailyMaintenanceOrder.setConfirmStatus(CommonConstant.STATUS_0); dailyMaintenanceOrderService.save(dailyMaintenanceOrder); for(MaintenanceStandardDetail maintenanceStandardDetail:maintenanceStandardDetailList){ DailyMaintenanceOrderDetail dailyMaintenanceOrderDetail = new DailyMaintenanceOrderDetail(); dailyMaintenanceOrderDetail.setDailyMaintenanceOrderId(dailyMaintenanceOrder.getId()); dailyMaintenanceOrderDetail.setMaintenanceStandardDetailId(maintenanceStandardDetail.getId()); dailyMaintenanceOrderDetail.setMaintenanceStandardId(maintenanceStandard.getId()); dailyMaintenanceOrderDetail.setMaintenanceProjectId(maintenanceStandardDetail.getMaintenanceProjectId()); dailyMaintenanceOrderDetail.setDelFlag(0); maintenanceOrderDetailService.save(dailyMaintenanceOrderDetail); } } equipmentMaintenancePlanService.updateById(equipmentMaintenancePlan); String msg = "单据号为【"+equipmentMaintenancePlan.getNum()+"】的保养计划已生成保养工单"; MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("有新的保养工单"); messageDTO.setContent(msg); messageDTO.setCategory("保养工单"); messageDTO.setFromUser(user.getUsername()); messageDTO.setToUser("admin"); if(equipmentMaintenancePlanDetails.size()!=0){ sysBaseApi.sendSysAnnouncement(messageDTO); } return Result.OK("操作成功"); } /*--------------------------------子表处理-保养计划明细-begin----------------------------------------------*/ /** * 通过主表ID查询 * @return */ //@AutoLog(value = "保养计划明细-通过主表ID查询") @ApiOperation(value="保养计划明细-通过主表ID查询", notes="保养计划明细-通过主表ID查询") @GetMapping(value = "/listEquipmentMaintenancePlanDetailByMainId") public Result> listEquipmentMaintenancePlanDetailByMainId(EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(equipmentMaintenancePlanDetail, req.getParameterMap()); Page page = new Page(pageNo, pageSize); IPage pageList = equipmentMaintenancePlanDetailService.pageList(page,equipmentMaintenancePlanDetail.getPlanId()); return Result.OK(pageList); } /** * 添加 * @param equipmentMaintenancePlanDetail * @return */ @AutoLog(value = "保养计划明细-添加") @ApiOperation(value="保养计划明细-添加", notes="保养计划明细-添加") @PostMapping(value = "/addEquipmentMaintenancePlanDetail") public Result addEquipmentMaintenancePlanDetail(@RequestBody EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail) { equipmentMaintenancePlanDetailService.save(equipmentMaintenancePlanDetail); return Result.OK("添加成功!"); } /** * 编辑 * @param equipmentMaintenancePlanDetail * @return */ @AutoLog(value = "保养计划明细-编辑") @ApiOperation(value="保养计划明细-编辑", notes="保养计划明细-编辑") @RequestMapping(value = "/editEquipmentMaintenancePlanDetail", method = {RequestMethod.PUT,RequestMethod.POST}) public Result editEquipmentMaintenancePlanDetail(@RequestBody EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail) { equipmentMaintenancePlanDetailService.updateById(equipmentMaintenancePlanDetail); return Result.OK("编辑成功!"); } /** * 通过id删除 * @param id * @return */ @AutoLog(value = "保养计划明细-通过id删除") @ApiOperation(value="保养计划明细-通过id删除", notes="保养计划明细-通过id删除") @DeleteMapping(value = "/deleteEquipmentMaintenancePlanDetail") public Result deleteEquipmentMaintenancePlanDetail(@RequestParam(name="id",required=true) String id) { equipmentMaintenancePlanDetailService.removeById(id); return Result.OK("删除成功!"); } /** * 批量删除 * @param ids * @return */ @AutoLog(value = "保养计划明细-批量删除") @ApiOperation(value="保养计划明细-批量删除", notes="保养计划明细-批量删除") @DeleteMapping(value = "/deleteBatchEquipmentMaintenancePlanDetail") public Result deleteBatchEquipmentMaintenancePlanDetail(@RequestParam(name="ids",required=true) String ids) { this.equipmentMaintenancePlanDetailService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("批量删除成功!"); } /** * 导出 * @return */ @RequestMapping(value = "/exportEquipmentMaintenancePlanDetail") public ModelAndView exportEquipmentMaintenancePlanDetail(HttpServletRequest request, EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail) { // Step.1 组装查询条件 QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(equipmentMaintenancePlanDetail, request.getParameterMap()); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); // Step.2 获取导出数据 List pageList = equipmentMaintenancePlanDetailService.list(queryWrapper); List exportList = null; // 过滤选中数据 String selections = request.getParameter("selections"); if (oConvertUtils.isNotEmpty(selections)) { List selectionList = Arrays.asList(selections.split(",")); exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); } else { exportList = pageList; } // Step.3 AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); //此处设置的filename无效,前端会重更新设置一下 mv.addObject(NormalExcelConstants.FILE_NAME, "保养计划明细"); mv.addObject(NormalExcelConstants.CLASS, EquipmentMaintenancePlanDetail.class); mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("保养计划明细报表", "导出人:" + sysUser.getRealname(), "保养计划明细")); mv.addObject(NormalExcelConstants.DATA_LIST, exportList); return mv; } /** * 导入 * @return */ @RequestMapping(value = "/importEquipmentMaintenancePlanDetail/{mainId}") public Result importEquipmentMaintenancePlanDetail(HttpServletRequest request, HttpServletResponse response, @PathVariable("mainId") String mainId) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { // 获取上传文件对象 MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setNeedSave(true); try { List list = ExcelImportUtil.importExcel(file.getInputStream(), EquipmentMaintenancePlanDetail.class, params); for (EquipmentMaintenancePlanDetail temp : list) { temp.setPlanId(mainId); } long start = System.currentTimeMillis(); equipmentMaintenancePlanDetailService.saveBatch(list); log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒"); return Result.OK("文件导入成功!数据行数:" + list.size()); } catch (Exception e) { log.error(e.getMessage(), e); return Result.error("文件导入失败:" + e.getMessage()); } finally { try { file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); } } } return Result.error("文件导入失败!"); } @GetMapping("/getStandards") public Result getStandards(@RequestParam(name="ids",required=true) String ids, @RequestParam(name="maintenanceType",required=true) String maintenanceType ){ List equipmentIds = Arrays.asList(ids.split(",")); return Result.OK(equipmentMaintenancePlanService.getStandards(equipmentIds,maintenanceType)); } /*--------------------------------子表处理-保养计划明细-end----------------------------------------------*/ }