package org.jeecg.modules.lims.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.lims.api.JeecgSystemClient; import org.jeecg.modules.lims.entity.*; import org.jeecg.modules.lims.service.ILimsAppointmentAuditService; import org.jeecg.modules.lims.service.ILimsAppointmentService; import org.jeecg.modules.lims.service.ILimsInstrumentService; import org.jeecg.modules.lims.service.IWxService; import org.jeecg.modules.lims.vo.LimsAppointmentAuditVo; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @Description: lims_appointment_audit * @Author: jeecg-boot * @Date: 2023-06-19 * @Version: V1.0 */ @Api(tags = "lims_appointment_audit") @RestController @RequestMapping("/lims/testing/audit") @Slf4j public class LimsAppointmentAuditController extends JeecgController { @Autowired private ILimsAppointmentAuditService limsAppointmentAuditService; @Autowired private ILimsAppointmentService appointmentService; @Autowired private ILimsInstrumentService instrumentService; @Autowired private JeecgSystemClient systemClient; @Autowired private IWxService wxService; /** * 分页列表查询 * * @param limsAppointmentAudit * @param pageNo * @param pageSize * @param req * @return */ @AutoLog(value = "lims_appointment_audit-分页列表查询") @ApiOperation(value = "lims_appointment_audit-分页列表查询", notes = "lims_appointment_audit-分页列表查询") @GetMapping(value = "/list") public Result queryPageList(LimsAppointmentAudit limsAppointmentAudit, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(limsAppointmentAudit, req.getParameterMap()); queryWrapper.lambda().orderByDesc(LimsAppointmentAudit::getCreateTime); Page page = new Page(pageNo, pageSize); IPage pageList = limsAppointmentAuditService.page(page, queryWrapper); Page page2 = new Page(pageNo, pageSize); comp(pageList, page2); return Result.OK(page2); } private void comp(IPage pageList, Page page) { List collect = pageList.getRecords().stream().map(item -> { LimsAppointmentAuditVo vo = new LimsAppointmentAuditVo(); BeanUtils.copyProperties(item, vo); //预约 LimsAppointment appointment = appointmentService.getById(item.getAppoId()); if (appointment != null) { vo.setAppoName(appointment.getName()); } //仪器 if (appointment != null && appointment.getInstrument() != null) { LimsInstrument instrument = instrumentService.getById(appointment.getInstrument()); if (instrument != null) { vo.setInstrumentName(instrument.getName()); } } //部门 List departIdModels = systemClient.getUserDepartsListByName(item.getCreateBy()).getResult(); if (departIdModels != null && departIdModels.size() > 0) { String title = departIdModels.get(0).getTitle(); vo.setDepartName(title); } //用户 SysUser user = systemClient.queryByUserName(item.getCreateBy()).getResult(); if (user != null) { vo.setCreateBy(user.getRealname()); } return vo; }).collect(Collectors.toList()); BeanUtils.copyProperties(pageList, page); page.setRecords(collect); } /** * 添加 * * @param limsAppointmentAudit * @return */ @AutoLog(value = "lims_appointment_audit-添加") @ApiOperation(value = "lims_appointment_audit-添加", notes = "lims_appointment_audit-添加") @PostMapping(value = "/add") public Result add(@RequestBody LimsAppointmentAudit limsAppointmentAudit) { limsAppointmentAuditService.save(limsAppointmentAudit); return Result.OK("添加成功!"); } /** * 编辑 * * @param limsAppointmentAudit * @return */ @AutoLog(value = "lims_appointment_audit-编辑") @ApiOperation(value = "lims_appointment_audit-编辑", notes = "lims_appointment_audit-编辑") @PutMapping(value = "/edit") @Transactional public Result edit(@RequestBody LimsAppointmentAudit limsAppointmentAudit) { limsAppointmentAuditService.updateById(limsAppointmentAudit); LimsAppointmentAudit audit = limsAppointmentAuditService.getById(limsAppointmentAudit.getId()); //编辑审批时需要推送结果给用户 Map params = new HashMap<>(); String appoId = audit.getAppoId(); LimsAppointment appointment = appointmentService.getById(appoId); SysUser user = systemClient.queryByUserName(appointment.getCreateBy()).getResult(); List departs = systemClient.getUserDepartsListByName(user.getUsername()).getResult(); if (departs != null && departs.size() > 0) { String depart = departs.get(0).getTitle(); params.put("depart", depart); } else { params.put("depart", "未设置部门"); } String optionid = appointment.getOptionid(); String[] optionids = optionid.split(","); LimsInstrument instrument = instrumentService.getById(appointment.getInstrument()); params.put("equ", instrument.getName()); params.put("realname", user.getRealname()); params.put("username", user.getUsername()); params.put("date", DateUtils.date2Str(audit.getCreateTime(), DateUtils.date_sdf.get())); params.put("remark", appointment.getName() + ",共" + optionids.length + "小时"); params.put("result",audit.getStatus().equals("1") ? "同意":"拒绝"); wxService.sendMessageToUser(params, audit); //更新预约表状态 0-正常 2-取消 appointment.setStatus(audit.getStatus().equals("1") ? "0":"2"); appointmentService.updateById(appointment); return Result.OK("编辑成功!"); } /** * 通过id删除 * * @param id * @return */ @AutoLog(value = "lims_appointment_audit-通过id删除") @ApiOperation(value = "lims_appointment_audit-通过id删除", notes = "lims_appointment_audit-通过id删除") @DeleteMapping(value = "/delete") public Result delete(@RequestParam(name = "id", required = true) String id) { limsAppointmentAuditService.removeById(id); return Result.OK("删除成功!"); } /** * 批量删除 * * @param ids * @return */ @AutoLog(value = "lims_appointment_audit-批量删除") @ApiOperation(value = "lims_appointment_audit-批量删除", notes = "lims_appointment_audit-批量删除") @DeleteMapping(value = "/deleteBatch") public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { this.limsAppointmentAuditService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("批量删除成功!"); } /** * 通过id查询 * * @param id * @return */ @AutoLog(value = "lims_appointment_audit-通过id查询") @ApiOperation(value = "lims_appointment_audit-通过id查询", notes = "lims_appointment_audit-通过id查询") @GetMapping(value = "/queryById") public Result queryById(@RequestParam(name = "id", required = true) String id) { LimsAppointmentAudit limsAppointmentAudit = limsAppointmentAuditService.getById(id); if (limsAppointmentAudit == null) { return Result.error("未找到对应数据"); } return Result.OK(limsAppointmentAudit); } /** * 导出excel * * @param request * @param limsAppointmentAudit */ @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, LimsAppointmentAudit limsAppointmentAudit) { return super.exportXls(request, limsAppointmentAudit, LimsAppointmentAudit.class, "lims_appointment_audit"); } /** * 通过excel导入数据 * * @param request * @param response * @return */ @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, LimsAppointmentAudit.class); } }