package cn.besteam.modules.medical.controller; import cn.besteam.common.api.vo.Result; import cn.besteam.common.aspect.annotation.AutoLog; import cn.besteam.common.aspect.annotation.LogApi; import cn.besteam.modules.medical.dto.*; import cn.besteam.modules.medical.entity.MwDisinfectRecord; import cn.besteam.modules.medical.service.IMwDisinfectRecordService; import cn.besteam.modules.medical.vo.MwDisinfectRecordVo; import cn.besteam.modules.medical.vo.MwDisinfectRecordExportVO; import cn.besteam.modules.shiro.authc.util.EnvUtils; import cn.besteam.modules.system.biz.SysDictBiz; import cn.besteam.modules.system.entity.SysDepartment; import cn.besteam.modules.system.entity.SysDictItem; import cn.besteam.modules.system.entity.SysUser; import cn.besteam.modules.system.service.ISysDepartmentService; import cn.besteam.modules.system.service.ISysDictItemService; import cn.besteam.modules.system.service.ISysUserService; import cn.besteam.modules.system.vo.SysDictItemVO; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.*; /** * @Title: Controller * @Description: 消毒记录 * @author: besteam * @date: 2023-05-16 * @version: V1.0 */ @RestController @RequestMapping("/medical/mwDisinfectRecord") @Slf4j @Api(description = "消毒记录") public class MwDisinfectRecordController { @Autowired private IMwDisinfectRecordService mwDisinfectRecordService; @Autowired private ISysDepartmentService sysDepartmentService; @Autowired private ISysDictItemService sysDictItemService; @Autowired private ISysUserService sysUserService; @Autowired private SysDictBiz sysDictBiz; @GetMapping("/getDisinfectRecordList") @ApiOperation("消毒记录-列表") public Result> getWasteWaterList(MwDisinfectRecordSeacherDto dto, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { IPage pageList = mwDisinfectRecordService.queryPageList(pageNo, pageSize,dto); return Result.ok(pageList); } @GetMapping(value = "/getListDictType") @ApiOperation(value = "【20260421】获取消毒方式和消毒设备", notes = "获取消毒方式和消毒设备", produces = "application/json") @ApiImplicitParams({ @ApiImplicitParam(value = "获取消毒方式(1=消毒方式,2=消毒设备)", name = "type", dataType = "int"), }) public Result> listDictType(Integer type) { String ids = "11,12"; if (type!=null && type == 1) {//消毒方式 ids = "11"; } else if (type!=null && type == 2) {//消毒设备 ids = "12"; } List sysDictVOS = sysDictBiz.queryListDisinfect(ids); List voList = new ArrayList<>(); for(SysDictItem vo : sysDictVOS){ SysDictItemVO sysDictItemVO= new SysDictItemVO(); BeanUtils.copyProperties(vo,sysDictItemVO); voList.add(sysDictItemVO); } return Result.ok(voList); } @PostMapping("/supply") @ApiOperation(value = "【20260421】消毒记录补录", notes = "消毒记录补录", produces = "application/json") @LogApi(value = "消毒记录补录") public Result supply(@RequestBody MwDisinfectRecordDto dto) { Result result = new Result<>(); try { Integer number = mwDisinfectRecordService.count(new QueryWrapper().lambda() .eq(MwDisinfectRecord::getDisinfectTime, dto.getDisinfectTime())); if (number <= 0) { MwDisinfectRecord mwDisinfectRecord = new MwDisinfectRecord(); BeanUtils.copyProperties(dto, mwDisinfectRecord); SysDepartment sysDepartment = sysDepartmentService.getById(dto.getHospitalId()); if (Objects.isNull(dto.getDisinfectUserId())) { dto.setDisinfectUserId(EnvUtils.getUser().getId()); } SysUser sysUser = sysUserService.getById(dto.getDisinfectUserId()); SysDictItem sysDictItemDisinfect = sysDictItemService.getById(dto.getDisinfectTypeId()); SysDictItem sysDictItemDevice = sysDictItemService.getById(dto.getDeviceTypeId()); mwDisinfectRecord.setCreateTime(new java.util.Date()); if (sysUser != null) { mwDisinfectRecord.setDisinfectUserName(sysUser.getName()); } if (sysDepartment != null) { mwDisinfectRecord.setHospitalName(sysDepartment.getDepartName()); } if (sysDictItemDisinfect != null) { mwDisinfectRecord.setDisinfectType(sysDictItemDisinfect.getItemText()); mwDisinfectRecord.setDisinfectContent(sysDictItemDisinfect.getItemValue()); } if (sysDictItemDevice != null) { mwDisinfectRecord.setDeviceType(sysDictItemDevice.getItemValue()); } mwDisinfectRecordService.save(mwDisinfectRecord); } result.success("添加成功!"); } catch (Exception e) { log.error("消毒记录补录失败", e); result.error500("操作失败"); } return result; } /*=====消毒记录导出--开始=======*/ private static Map headerMapDisinfectRecord = new LinkedHashMap<>(); static { headerMapDisinfectRecord.put("hospitalName", "医院名称"); headerMapDisinfectRecord.put("disinfectTime", "消毒时间"); headerMapDisinfectRecord.put("disinfectAddress", "消毒地点"); headerMapDisinfectRecord.put("deviceType", "设备类型"); headerMapDisinfectRecord.put("disinfectType", "消毒方式"); headerMapDisinfectRecord.put("disinfectContent", "消毒内容"); headerMapDisinfectRecord.put("disinfectUserName", "消毒人员"); } @GetMapping(value = "/exportDisinfectRecord") @AutoLog(value = "消毒记录导出") @ApiOperation(value = "【0729迭代】消毒记录导出", notes = "消毒记录导出", produces = "application/json") public void exportDisinfectRecord(HttpServletResponse response, MwDisinfectRecordSeacherDto dto) throws IOException { List list = mwDisinfectRecordService.queryExportList(dto); List voList = new ArrayList<>(); for (MwDisinfectRecordVo record : list) { MwDisinfectRecordExportVO vo = new MwDisinfectRecordExportVO(); BeanUtils.copyProperties(record, vo); voList.add(vo); } ExcelWriter writer = ExcelUtil.getWriter(true); writer.renameSheet("消毒记录"); // 设置列宽 writer.setColumnWidth(0, 30); writer.setColumnWidth(1, 25); writer.setColumnWidth(2, 25); writer.setColumnWidth(3, 25); writer.setColumnWidth(4, 25); writer.setColumnWidth(5, 50); writer.setColumnWidth(6, 25); // 设置表头别名 writer.setHeaderAlias(headerMapDisinfectRecord); writer.write(voList); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("消毒记录", "UTF-8") + ".xls"); writer.flush(response.getOutputStream()); writer.close(); } /*=====消毒记录导出--结尾=======*/ }