medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppDepartmentController.java
@@ -54,9 +54,15 @@ @PostMapping("/regionTree") @ApiImplicitParam(name = "keyword", value = "关键字", required = false) public R<List<SysDepartmentVO>> getRegionTree(@RequestParam(required = false) String keyword) { return R.ok(sysDepartmentService.getRegionTree(keyword)); return R.ok(sysDepartmentService.getRegionTree1(keyword)); } @ApiOperation("获取单位详情") @PostMapping("/detail") public R<SysDepartment> getRegionTree(@RequestParam(required = true) Long id) { return R.ok(sysDepartmentService.getById(id)); } /** * 获取区域树 * @@ -76,7 +82,7 @@ for (SysDepartment sysDepartment : list) { //获取医院暂存间信息 MwStagingRoom one = roomService.lambdaQuery().eq(MwStagingRoom::getDepartmentId, sysDepartment.getId()).one(); if (one != null) { if (one == null) { continue; } //获取存了多少数量 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppFileController.java
New file @@ -0,0 +1,50 @@ package com.sinata.web.controller.applet; import com.sinata.common.core.domain.R; import com.sinata.common.exception.ServiceException; import com.sinata.system.service.OssService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.Objects; /** * @author mitao * @date 2024/12/23 */ @Api(tags = {"文件上传接口"}) @RestController @RequiredArgsConstructor @RequestMapping("/applet/file") public class AppFileController { private final OssService ossService; /** * 上传文件 * * @param file * @return */ @ApiOperation(value = "上传文件") @PostMapping("/upload") public R<String> upload(@RequestPart("file") MultipartFile file) { if (Objects.isNull(file)) { throw new ServiceException("文件不能为空"); } String fileUrl; try { fileUrl = ossService.uploadFile(file); } catch (IOException e) { throw new RuntimeException(e); } return R.ok(fileUrl); } } medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCheckoutRecordController.java
@@ -96,7 +96,7 @@ return R.ok(mwCheckoutRecordService.totalUp2(date1,date2,sysUser.getUserId())); } @ApiOperation(value = "接收统计下",tags = "处置人员") @ApiOperation(value = "处置统下",tags = "处置人员") @PostMapping("/end/record") public R<List<CheckOutDto>> record2(@ApiParam("日期1") LocalDate date1,@ApiParam("日期2")LocalDate date2) { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java
@@ -52,13 +52,29 @@ private final MwDisposalRecordItemService disposalRecordItemService; private final MwDisposalHandleRecordService disposalHandleRecordService; private final MwDisposalHandleRecordItemService disposalHandleRecordItemService; private final MwStagingRoomService roomService; @ApiOperation("新增医废记录") @PostMapping("/add") public R<?> add(@Valid @RequestBody MwCollectRecord mwCollectRecord) { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); MwBox one = boxService.lambdaQuery().eq(MwBox::getBoxNumber, mwCollectRecord.getBoxNumber()).one(); mwCollectRecord.setBoxId(one.getId()); MwStagingRoom one1 = roomService.lambdaQuery().eq(MwStagingRoom::getDepartmentId, sysUser.getDepartmentId()).one(); if (one1==null){ return R.fail("当前单位没有暂存间"); } mwCollectRecord.setStagingRoomId(one1.getId()); mwCollectRecord.setDepartmentId(sysUser.getDepartmentId()); // 创建一个随机数生成器实例 Random random = new Random(); // 生成一个6位数范围内的随机整数(100000 到 999999) int randomNumber = 10000000 + random.nextInt(90000000); mwCollectRecord.setMedicalWasteNumber(String.valueOf(randomNumber)); collectRecordService.save(mwCollectRecord); return R.ok(); } @@ -160,7 +176,9 @@ public R<List<HospitalCollectTotalUpDto>> tanscollecttotal3(String boxNum) { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); MwCollectRecord one = collectRecordService.lambdaQuery().eq(MwCollectRecord::getBoxNumber, boxNum).eq(MwCollectRecord::getStatus, 2).last("limit 1").one(); if (one==null){ return R.ok(); } //先获取医院ids List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus,2).eq(MwCollectRecord::getCheckoutUserId, one.getCheckoutUserId()).groupBy(MwCollectRecord::getDepartmentId).list(); //循环医院,然后放入 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppletDictDataController.java
New file @@ -0,0 +1,230 @@ package com.sinata.web.controller.applet; import com.sinata.common.annotation.Log; import com.sinata.common.core.controller.BaseController; import com.sinata.common.core.domain.AjaxResult; import com.sinata.common.core.domain.R; import com.sinata.common.core.domain.entity.SysDictData; import com.sinata.common.core.page.TableDataInfo; import com.sinata.common.entity.PageDTO; import com.sinata.common.enums.BusinessType; import com.sinata.common.utils.StringUtils; import com.sinata.common.utils.poi.ExcelUtil; import com.sinata.system.domain.dto.SysDictDataDTO; import com.sinata.system.domain.query.KeyWordQuery; import com.sinata.system.domain.vo.SysDictDataVO; import com.sinata.system.service.ISysDictDataService; import com.sinata.system.service.ISysDictTypeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; /** * 数据字典信息 * * @author ruoyi */ @Api(tags = {"数据字典相关接口"}) @RestController @Validated @RequestMapping("/applet/system/dict/data") public class AppletDictDataController extends BaseController { @Autowired private ISysDictDataService dictDataService; @Autowired private ISysDictTypeService dictTypeService; /** * 数据字典分页列表 * * @param page * @return */ @ApiOperation("数据字典分页列表") @PostMapping("/page") public R<PageDTO<SysDictDataVO>> page(@Valid @RequestBody KeyWordQuery query) { return R.ok(dictDataService.pageList(query)); } /** * 新增数据字典 * * @return */ @ApiOperation("保存数据字典信息") @PostMapping("/save") public R<?> add(@Valid @RequestBody SysDictDataDTO dto) { dictDataService.save(dto); return R.ok(); } /** * 删除 * * @param dictCode * @return */ @ApiOperation("删除") @DeleteMapping("/{dictCode}") public R<?> remove(@ApiParam(name = "dictCode", value = "数据字典主键", required = true) @PathVariable("dictCode") Long dictCode) { dictDataService.removeById(dictCode); return R.ok(); } /** * 医废类型列表 * * @return */ @ApiOperation("医废类型列表") @GetMapping("/medicalWasteTypeList") public R<List<SysDictDataVO>> medicalWasteTypeList() { return R.ok(dictDataService.medicalWasteTypeList()); } /** * 器具类型列表 * * @return */ @ApiOperation("器具类型列表") @GetMapping("/equipmentTypeList") public R<List<SysDictDataVO>> equipmentTypeList() { return R.ok(dictDataService.equipmentTypeList()); } /** * 规章制度类型列表 * * @return */ @ApiOperation("规章制度类型列表") @GetMapping("/regulationsTypeList") public R<List<SysDictDataVO>> regulationsTypeList() { return R.ok(dictDataService.regulationsTypeList()); } /** * 作业类型 * * @return */ @ApiOperation("作业类型") @GetMapping("/workTypeList") public R<List<SysDictDataVO>> workTypeList() { return R.ok(dictDataService.workTypeList()); } /** * 医疗机构级别 * * @return */ @ApiOperation("医疗机构级别") @GetMapping("/institutionLevelList") public R<List<SysDictDataVO>> institutionLevelList() { return R.ok(dictDataService.institutionLevelList()); } /** * 医疗机构性质 * * @return */ @ApiOperation("医疗机构性质") @GetMapping("/institutionTypeList") public R<List<SysDictDataVO>> institutionTypeList() { return R.ok(dictDataService.institutionTypeList()); } @PreAuthorize("@ss.hasPermi('system:dict:list')") @GetMapping("/list") public TableDataInfo list(SysDictData dictData) { startPage(); List<SysDictData> list = dictDataService.selectDictDataList(dictData); return getDataTable(list); } @Log(title = "字典数据", businessType = BusinessType.EXPORT) @PreAuthorize("@ss.hasPermi('system:dict:export')") @PostMapping("/export") public void export(HttpServletResponse response, SysDictData dictData) { List<SysDictData> list = dictDataService.selectDictDataList(dictData); ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class); util.exportExcel(response, list, "字典数据"); } /** * 查询字典数据详细 */ @PreAuthorize("@ss.hasPermi('system:dict:query')") @GetMapping(value = "/{dictCode}") public AjaxResult getInfo(@PathVariable Long dictCode) { return success(dictDataService.selectDictDataById(dictCode)); } /** * 根据字典类型查询字典数据信息 */ @GetMapping(value = "/type/{dictType}") public AjaxResult dictType(@PathVariable String dictType) { List<SysDictData> data = dictTypeService.selectDictDataByType(dictType); if (StringUtils.isNull(data)) { data = new ArrayList<SysDictData>(); } return success(data); } /** * 新增字典类型 */ @PreAuthorize("@ss.hasPermi('system:dict:add')") @Log(title = "字典数据", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody SysDictData dict) { dict.setCreateBy(getUsername()); return toAjax(dictDataService.insertDictData(dict)); } /** * 修改保存字典类型 */ @PreAuthorize("@ss.hasPermi('system:dict:edit')") @Log(title = "字典数据", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody SysDictData dict) { dict.setUpdateBy(getUsername()); return toAjax(dictDataService.updateDictData(dict)); } /** * 删除字典类型 */ @PreAuthorize("@ss.hasPermi('system:dict:remove')") @Log(title = "字典类型", businessType = BusinessType.DELETE) @DeleteMapping("/{dictCodes}") public AjaxResult remove(@PathVariable Long[] dictCodes) { dictDataService.deleteDictDataByIds(dictCodes); return success(); } } medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java
@@ -111,7 +111,7 @@ .authorizeHttpRequests((requests) -> { permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对于登录login 注册register 验证码captchaImage 允许匿名访问 requests.antMatchers("/backend/login","/applet/login", "/register", "/captchaImage").permitAll() requests.antMatchers("/backend/login","/applet/file/upload","/applet/sysDepartment/regionTree","/applet/getCode","/applet/login", "/register", "/captchaImage").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/msg", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java
@@ -77,6 +77,8 @@ @ApiModelProperty("审核意见") @TableField("AUDIT_OPINION") private String auditOpinion; @TableField(exist = false) private String code; } medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java
@@ -45,6 +45,7 @@ * @return */ List<SysDepartmentVO> getRegionTree(String keyword); List<SysDepartmentVO> getRegionTree1(String keyword); /** * 当前登录用户所在区域 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java
@@ -1,9 +1,11 @@ package com.sinata.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sinata.common.constant.CacheConstants; import com.sinata.common.core.domain.entity.SysUser; import com.sinata.common.entity.PageDTO; import com.sinata.common.exception.ServiceException; import com.sinata.common.utils.BeanUtils; @@ -138,6 +140,27 @@ } return root; } @Override public List<SysDepartmentVO> getRegionTree1(String keyword) { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); List<SysDepartmentVO> root = new ArrayList<>(); SysDepartment sysDepartment = this.baseMapper.selectById(sysUser.getDepartmentId()); SysDepartment currentDepartment = this.baseMapper.selectById(sysDepartment.getParentId()); if (Objects.isNull(currentDepartment)) { return root; } if (!currentDepartment.getOrgType().equals(DepartmentEnum.REGION.getCode())) { return root; } Map<Long, List<SysDepartment>> childrenMap = getChildrenDepartmentByOrgType(currentDepartment, Collections.singletonList(DepartmentEnum.REGION.getCode())); SysDepartmentVO sysDepartmentVO = fillChildrenTreeModel(currentDepartment, childrenMap); root.add(sysDepartmentVO); if (StringUtils.isNotBlank(keyword)) { treeMatch(root, keyword); } return root; } /** * 获取当前登录用户所属区域 medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml
@@ -212,9 +212,9 @@ <select id="getGroup" resultType="com.sinata.system.domain.dto.CollectDto"> SELECT BOX_NUMBER as boxNumber,WASTE_TYPE as wasteType,COUNT(1) as num ,sum(WEIGHT) as weight,MAX(COLLECT_TIME) as lastTime from MEDICAL_WASTE.MW_COLLECT_RECORD <where> STATUS = 2 AND DEPARTMENT_ID = #{departmentId} STATUS = 1 AND DEPARTMENT_ID = #{departmentId} <if test="boxNumber != null and boxNumber != ''"> and boxNumber like concat('%',#{boxNumber},'%') and BOX_NUMBER like concat('%',#{boxNumber},'%') </if> </where> @@ -226,7 +226,7 @@ <where> STATUS = 2 AND DEPARTMENT_ID = #{departmentId} <if test="boxNumber != null and boxNumber != ''"> and boxNumber like concat('%',#{boxNumber},'%') and BOX_NUMBER like concat('%',#{boxNumber},'%') </if> </where> GROUP BY BOX_ID @@ -242,7 +242,7 @@ <where> STATUS = #{status} AND DEPARTMENT_ID = #{departmentId} <if test="boxNumber != null and boxNumber != ''"> and boxNumber like concat('%',#{boxNumber},'%') and BOX_NUMBER like concat('%',#{boxNumber},'%') </if> </where> GROUP BY BOX_ID