From 75aa42c51ae2a63d7c1e5e813c0a88fd303bdbf4 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 03 一月 2025 18:04:03 +0800 Subject: [PATCH] Merge remote-tracking branch 'gitee/master' --- medicalWaste-admin/src/main/resources/application.yml | 2 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CarDto.java | 9 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalUpDto.java | 20 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java | 41 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CheckOutDto.java | 23 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppFileController.java | 50 + medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WXCore.java | 48 medicalWaste-system/src/main/java/com/sinata/system/domain/MwStagingRoom.java | 12 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java | 44 medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WeChatUtil.java | 80 + medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppAgreementController.java | 49 + medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/EnvVersion.java | 35 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectCarTotalUpDto.java | 23 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/UserInfoDTO.java | 21 medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java | 23 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMonitorDeviceController.java | 77 + medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SignCollectDto.java | 13 medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecordItem.java | 4 medicalWaste-system/src/main/java/com/sinata/system/service/MwMonitorDeviceService.java | 1 medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecord.java | 13 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/BoxListDto.java | 10 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java | 444 +++++++++ medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java | 2 medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java | 2 medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java | 3 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/HospitalCollectTotalUpDto.java | 17 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwWarningRecordController.java | 66 + medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java | 5 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwTransitRouteController.java | 92 + medicalWaste-system/src/main/java/com/sinata/system/service/MwCheckoutRecordService.java | 11 medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WxPKCS7Encoder.java | 63 + medicalWaste-common/src/main/java/com/sinata/common/core/domain/model/LoginUser.java | 2 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppletDictDataController.java | 230 ++++ medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppUserController.java | 111 ++ medicalWaste-system/src/main/java/com/sinata/system/domain/MwCollectRecord.java | 31 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalDto.java | 19 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCheckoutRecordServiceImpl.java | 32 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectDto.java | 31 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppRegulatoryRecordController.java | 96 + medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java | 18 medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml | 110 ++ medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCheckoutRecordController.java | 150 +++ medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java | 2 medicalWaste-admin/src/main/resources/application-prod.yml | 2 medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java | 16 medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/CapacityUtil.java | 37 medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecord.java | 6 medicalWaste-admin/src/main/resources/application-dev.yml | 2 medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java | 2 medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCheckoutRecordMapper.java | 11 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMonitorDeviceServiceImpl.java | 17 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppDepartmentController.java | 204 ++++ medicalWaste-system/src/main/java/com/sinata/system/domain/dto/HospitalCollectTotalUp1Dto.java | 15 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java | 205 ++++ medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java | 85 + medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java | 2 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java | 43 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CountTwoDto.java | 12 medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/AES.java | 72 + medicalWaste-system/src/main/resources/mapper/system/MwCheckoutRecordMapper.xml | 67 + 60 files changed, 2,903 insertions(+), 30 deletions(-) diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppAgreementController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppAgreementController.java new file mode 100644 index 0000000..239b641 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppAgreementController.java @@ -0,0 +1,49 @@ +package com.sinata.web.controller.applet; + +import com.sinata.common.core.domain.R; +import com.sinata.system.domain.SysAgreement; +import com.sinata.system.domain.dto.SysAgreementDTO; +import com.sinata.system.service.SysAgreementService; +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * <p> + * 协议 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-23 + */ +@Api(tags = {"协议管理相关接口"}) +@RestController +@RequiredArgsConstructor +@RequestMapping("/applet/sysAgreement") +public class AppAgreementController { + private final SysAgreementService sysAgreementService; + + /** + * 保存用户注册协议 + * @param dto + * @return + */ + @ApiOperation("获取用户注册协议") + @PostMapping("/get") + public R<SysAgreement> save(){ + SysAgreement one = sysAgreementService.lambdaQuery().eq(SysAgreement::getType, 1).one(); + return R.ok(one); + } + @ApiOperation("获取用户隐私协议") + @PostMapping("/primary/get") + public R<SysAgreement> save1(){ + SysAgreement one = sysAgreementService.lambdaQuery().eq(SysAgreement::getType, 2).one(); + return R.ok(one); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppDepartmentController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppDepartmentController.java new file mode 100644 index 0000000..8d37177 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppDepartmentController.java @@ -0,0 +1,204 @@ +package com.sinata.web.controller.applet; + +import com.sinata.common.core.domain.R; +import com.sinata.common.core.domain.entity.SysUser; +import com.sinata.common.utils.SecurityUtils; +import com.sinata.system.domain.*; +import com.sinata.system.domain.dto.CheckOutDto; +import com.sinata.system.domain.dto.CollectTotalUpDto; +import com.sinata.system.domain.dto.CountTwoDto; +import com.sinata.system.domain.dto.SysDepartmentDTO; +import com.sinata.system.domain.vo.SysDepartmentVO; +import com.sinata.system.mapper.SysDepartmentMapper; +import com.sinata.system.service.*; +import com.sinata.web.controller.tool.CapacityUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +/** + * <p> + * 区域表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-02 + */ +@Api(tags = {"监管人员"}) +@RestController +@Validated +@RequestMapping("/applet/sysDepartment") +@RequiredArgsConstructor +public class AppDepartmentController { + private final SysDepartmentService sysDepartmentService; + private final MwStagingRoomService roomService; + private final MwCollectRecordService collectRecordService; + private final MwCheckoutRecordService mwCheckoutRecordService; + private final ISysUserService userService; + private final MwTransitCarService carService; + + /** + * 获取区域树 + * @return + */ + @ApiOperation("获取区域树") + @PostMapping("/regionTree") + @ApiImplicitParam(name = "keyword", value = "关键字", required = false) + public R<List<SysDepartmentVO>> getRegionTree(@RequestParam(required = false) String keyword) { + List<SysDepartmentVO> regionTree1 = sysDepartmentService.getRegionTree2(keyword); + return R.ok(regionTree1); + } + + @ApiOperation("获取区域树") + @PostMapping("/pub/regionTree") + @ApiImplicitParam(name = "keyword", value = "关键字", required = false) + public R<List<SysDepartmentVO>> getRegionTree1(@RequestParam(required = false) String keyword) { + List<SysDepartmentVO> regionTree1 = sysDepartmentService.getRegionTree2(keyword); + return R.ok(regionTree1); + } + + + + + @ApiOperation("获取单位详情") + @PostMapping("/detail") + public R<SysDepartment> getRegionTree(@RequestParam(required = true) Long id) { + return R.ok(sysDepartmentService.getById(id)); + + } + + + /** + * 获取区域树 + * + * @return + */ + @ApiOperation(value = "获取全部/区域/医疗机构/处置单位/监管单位树-搜索框用", notes = "0:全部 1:区域 2:医疗机构 3:处置单位 4:监管单位") + @PostMapping("/departmentSearchTree") + @ApiImplicitParam(name = "type", value = "查询类型", required = true) + public R<List<SysDepartmentVO>> getDepartmentSearchTree() { + return R.ok(sysDepartmentService.getRegionTree2(null)); + } + + @ApiOperation("获取医院监管列表") + @PostMapping("/hospita/list") + public R<List<SysDepartment>> list(String name,Long areaId) { + List<SysDepartment> list = sysDepartmentService.lambdaQuery().eq(areaId!=null,SysDepartment::getParentId,areaId).like(name!=null,SysDepartment::getDepartmentName,name).eq(SysDepartment::getOrgType, 2).list(); + for (SysDepartment sysDepartment : list) { + //获取医院暂存间信息 + MwStagingRoom one = roomService.lambdaQuery().eq(MwStagingRoom::getDepartmentId, sysDepartment.getId()).one(); + if (one == null) { + continue; + } + //获取存了多少数量 + Long count = collectRecordService.lambdaQuery().eq(MwCollectRecord::getDepartmentId, sysDepartment.getId()).eq(MwCollectRecord::getStatus, 1).count(); + //计算百分率 + Integer maxCapacity = one.getMaxCapacity(); + String percentage = CapacityUtil.calculatePercentage(count, maxCapacity); + sysDepartment.setMaxCapacity(one.getMaxCapacity()); + sysDepartment.setNowCapacity(count.intValue()); + sysDepartment.setPercentage(percentage); + + } + return R.ok(list); + } + + + + @ApiOperation("获取处置监管列表") + @PostMapping("/end/list") + public R<List<SysDepartment>> list2(String name) { + List<SysDepartment> list = sysDepartmentService.lambdaQuery().like(name!=null,SysDepartment::getDepartmentName,name).eq(SysDepartment::getOrgType, 3).list(); + LocalDate now = LocalDate.now(); + for (SysDepartment sysDepartment : list) { + //获取库存总量 + Long count1 = collectRecordService.lambdaQuery().eq(MwCollectRecord::getReceiveDepartmentId, sysDepartment.getId()).count(); + //获取接收数量 + Long count2 = collectRecordService.lambdaQuery().isNotNull(MwCollectRecord::getReceiveTime).eq(MwCollectRecord::getReceiveDepartmentId, sysDepartment.getId()).count(); + //获取处置数量 + Long count3 = collectRecordService.lambdaQuery().isNotNull(MwCollectRecord::getDisposalTime).eq(MwCollectRecord::getReceiveDepartmentId, sysDepartment.getId()).count(); + sysDepartment.setCont1(count1); + sysDepartment.setCont2(count2); + sysDepartment.setCont3(count3); + } + return R.ok(list); + } + + + + @ApiOperation("医院暂存间情况") + @PostMapping("/room") + public R<List<CollectTotalUpDto>> collecttotal1(@ApiParam("医院id")@RequestParam Long departmentId) { + return R.ok(collectRecordService.collectTotal3(departmentId)); + } + + + @ApiOperation("医院暂存间情况上") + @PostMapping("/up/room") + public R<MwStagingRoom> collecttotal2(@ApiParam("医院id")@RequestParam Long departmentId) { + MwStagingRoom one = roomService.lambdaQuery().eq(MwStagingRoom::getDepartmentId, departmentId).one(); + Long count = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStagingRoomId, one.getId()).eq(MwCollectRecord::getStatus, 1).count(); + MwCollectRecord one1 = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStagingRoomId, one.getId()).eq(MwCollectRecord::getStatus, 1).orderByDesc(MwCollectRecord::getBoxTime).last("limit 1").one(); + one.setCount(count); + one.setBoxTime(one1.getBoxTime()); + return R.ok(one); + } + + @ApiOperation(value = "医院转运记录") + @PostMapping("/trans") + public R<List<CheckOutDto>> trans(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date, @ApiParam("医院id")@RequestParam Long departmentId) { + LocalDate now = LocalDate.now().minusDays(7); + if (date!=null){ + now = LocalDate.now(); + } + List<MwCheckoutRecord> list = mwCheckoutRecordService.lambdaQuery().ge(date ==null,MwCheckoutRecord::getCheckoutTime, now).eq(MwCheckoutRecord::getDepartmentId, departmentId).orderByDesc(MwCheckoutRecord::getCheckoutTime).list(); + List<CheckOutDto> backList = new ArrayList<>(); + for (MwCheckoutRecord mwCheckoutRecord : list) { + CheckOutDto checkOutDto = new CheckOutDto(); + SysUser byId = userService.getById(mwCheckoutRecord.getDriverId()); + checkOutDto.setDriverName(byId.getNickName()); + MwTransitCar byId1 = carService.getById(mwCheckoutRecord.getCarId()); + checkOutDto.setLicensePlateNumber(byId1.getLicensePlateNumber()); + checkOutDto.setCheckoutTime(mwCheckoutRecord.getCheckoutTime()); + List<CollectTotalUpDto> records = mwCheckoutRecordService.totalUp1(mwCheckoutRecord.getId()); + checkOutDto.setRecords(records); + backList.add(checkOutDto); + } + return R.ok(backList); + } + + @ApiOperation(value = "处置详情上") + @PostMapping("/end/total/up") + public R<CountTwoDto> outtotal2(@ApiParam("处置机构id")@RequestParam Long departmentId) { + CountTwoDto countTwoDto = new CountTwoDto(); + LocalDate now = LocalDate.now(); + Long count = collectRecordService.lambdaQuery().eq(MwCollectRecord::getReceiveDepartmentId, departmentId).eq(MwCollectRecord::getReceiveTime, now).count(); + Long count1 = collectRecordService.lambdaQuery().eq(MwCollectRecord::getReceiveDepartmentId, departmentId).eq(MwCollectRecord::getDisposalTime, now).count(); + countTwoDto.setCount(count); + countTwoDto.setCount1(count1); + return R.ok(countTwoDto); + } + + + @ApiOperation(value = "处置详情") + @PostMapping("/end/total") + public R<List<CollectTotalUpDto>> outtotal1(@ApiParam("处置机构id")@RequestParam Long departmentId) { + return R.ok(mwCheckoutRecordService.totalUp5(departmentId)); + } + + + + + +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppFileController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppFileController.java new file mode 100644 index 0000000..e0ff2ef --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppFileController.java @@ -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); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java new file mode 100644 index 0000000..42a86cb --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java @@ -0,0 +1,205 @@ +package com.sinata.web.controller.applet; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.sinata.common.constant.Constants; +import com.sinata.common.core.domain.AjaxResult; +import com.sinata.common.core.domain.R; +import com.sinata.common.core.domain.entity.SysMenu; +import com.sinata.common.core.domain.entity.SysRole; +import com.sinata.common.core.domain.entity.SysUser; +import com.sinata.common.core.domain.model.LoginBody; +import com.sinata.common.core.domain.model.LoginUser; +import com.sinata.common.utils.SecurityUtils; +import com.sinata.common.utils.StringUtils; +import com.sinata.framework.web.service.SysLoginService; +import com.sinata.framework.web.service.SysPermissionService; +import com.sinata.framework.web.service.TokenService; +import com.sinata.system.domain.SysDepartment; +import com.sinata.system.domain.SysUserRole; +import com.sinata.system.domain.dto.UserInfoDTO; +import com.sinata.system.mapper.SysUserRoleMapper; +import com.sinata.system.service.ISysMenuService; +import com.sinata.system.service.ISysRoleService; +import com.sinata.system.service.ISysUserService; +import com.sinata.system.service.SysDepartmentService; +import com.sinata.system.service.biz.AliSmsService; +import com.sinata.web.controller.tool.weChat.WXCore; +import com.sinata.web.controller.tool.weChat.WeChatUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Set; + +/** + * 登录验证 + * + * @author ruoyi + */ +@Api(tags = {"登录"}) +@RestController +@RequestMapping("/applet") +public class AppLoginController +{ + @Autowired + private SysLoginService loginService; + + @Autowired + private ISysMenuService menuService; + + @Autowired + private SysPermissionService permissionService; + + @Autowired + private TokenService tokenService; + + @Autowired + private ISysRoleService roleService; + + @Resource + private SysDepartmentService departmentService; + @Resource + private AliSmsService aliSmsService; + @Resource + private ISysUserService userService; + + + @PostMapping("/getCode") + @ApiOperation("获取验证码") + public AjaxResult getCode(String phone) + { + Random random = new Random(); + + int i = 100000 + random.nextInt(900000); + aliSmsService.sendLoginCode(phone, String.valueOf(i)); + return AjaxResult.success(); + } + @Resource + private WeChatUtil weChatUtil; + + + @PostMapping("/getPhone") + @ApiOperation("获取手机号") + public R getPhone(String jscoe, String EncryptedData_phone,String Iv_phone) + { + //使用jscode获取微信openid + Map<String, Object> map = weChatUtil.code2Session(jscoe); + Integer errcode = Integer.valueOf(map.get("errcode").toString()); + if(0 != errcode){ + return R.fail(map.get("msg").toString()); + } + String openid = map.get("openid").toString(); + String sessionKey = map.get("sessionKey").toString(); + + + String decrypt = WXCore.decrypt(EncryptedData_phone, sessionKey, Iv_phone); + if (StringUtils.isEmpty(decrypt)) { + return R.fail("获取手机信息失败"); + } + JSONObject phone = JSON.parseObject(decrypt); + String purePhoneNumber = phone.getString("purePhoneNumber"); + return R.ok(purePhoneNumber); + + } + /** + * 登录方法 + * + * @param loginBody 登录信息 + * @return 结果 + */ + @PostMapping("/login") + @ApiOperation("验证码登录") + public AjaxResult login(@RequestBody LoginBody loginBody) + { + AjaxResult ajax = AjaxResult.success(); + // 生成令牌 + LoginUser loginUser = loginService.login1(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), + loginBody.getUuid()); + ajax.put(Constants.TOKEN, tokenService.createToken(loginUser)); +// List<SysRole> roles = loginUser.getUser().getRoles(); +// if (CollectionUtils.isEmpty(roles)) { +// return AjaxResult.error("请关联角色!"); +// } + + List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId()); + +// ajax.put("menus", menus); + ajax.put("userInfo", loginUser); + return ajax; + } + + @PostMapping("/get/department") + @ApiOperation("登录后获取部门") + public R<SysDepartment> department() + { + SysUser user = SecurityUtils.getLoginUser().getUser(); + SysDepartment byId = departmentService.getById(user.getDepartmentId()); + return R.ok(byId); + } + @Resource + private SysUserRoleMapper sysUserRoleMapper; + @PostMapping("/get/user") + @ApiOperation("获取个人信息") + public R<UserInfoDTO> user() + { + SysUser user1 = SecurityUtils.getLoginUser().getUser(); + SysUser user = userService.getById(user1.getUserId()); + Set<String> roles = permissionService.getRolePermission(user); + SysDepartment byId2 = departmentService.getById(user.getDepartmentId()); + UserInfoDTO userInfoDTO = new UserInfoDTO(); + userInfoDTO.setNickName(user.getNickName()); + userInfoDTO.setDepartment(byId2); + userInfoDTO.setRoles(roles); + SysUserRole sysUserRole = sysUserRoleMapper.selectOne(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, user.getUserId())); + if (sysUserRole != null) { + SysRole byId = roleService.getById(sysUserRole.getRoleId()); + userInfoDTO.setRole(byId); + } + return R.ok(userInfoDTO); + } + + + + /** + * 获取用户信息 + * + * @return 用户信息 + */ + @GetMapping("getInfo") + public AjaxResult getInfo() + { + SysUser user = SecurityUtils.getLoginUser().getUser(); + // 角色集合 + Set<String> roles = permissionService.getRolePermission(user); + // 权限集合 + Set<String> permissions = permissionService.getMenuPermission(user); + AjaxResult ajax = AjaxResult.success(); + ajax.put("user", user); + ajax.put("roles", roles); + ajax.put("permissions", permissions); + return ajax; + } + + /** + * 获取路由信息 + * + * @return 路由信息 + */ + @GetMapping("getRouters") + public AjaxResult getRouters() + { + Long userId = SecurityUtils.getUserId(); + List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); + return AjaxResult.success(menuService.buildMenus(menus)); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMonitorDeviceController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMonitorDeviceController.java new file mode 100644 index 0000000..31f9b05 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMonitorDeviceController.java @@ -0,0 +1,77 @@ +package com.sinata.web.controller.applet; + +import com.sinata.common.core.domain.R; +import com.sinata.common.entity.PageDTO; +import com.sinata.system.domain.dto.MwMonitorDeviceDTO; +import com.sinata.system.domain.query.MwMonitorDeviceQuery; +import com.sinata.system.domain.vo.MwMonitorDeviceVO; +import com.sinata.system.service.MwMonitorDeviceService; +import com.sinata.system.service.biz.MonitorDeviceApiNewService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 监控设备 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-02 + */ +@Validated +@RestController +@Api(tags = {"监控设备"}) +@RequiredArgsConstructor +@RequestMapping("/applet/mwMonitorDevice") +public class AppMonitorDeviceController { + private final MwMonitorDeviceService mwMonitorDeviceService; + private final MonitorDeviceApiNewService monitorDeviceApiNewService; + + /** + * 监控设备分页列表 + * + * @param query + * @return + */ + @ApiOperation("监控设备分页列表") + @PostMapping("/page") + public R<PageDTO<MwMonitorDeviceVO>> pageList(@Valid @RequestBody MwMonitorDeviceQuery query) { + return R.ok(mwMonitorDeviceService.pageList(query)); + } + + + /** + * 实时监控列表 + * + * @param query + * @return + */ + @ApiOperation("实时监控列表") + @PostMapping("/monitor/page") + public R<List<MwMonitorDeviceVO>> monitorPageList(@Valid @RequestBody MwMonitorDeviceQuery query) { + return R.ok(mwMonitorDeviceService.pageMonitorPage1(query).getList()); + } + + /** + * 获取视频服务器设备播放路径 + * + * @param id + * @param channelNum + * @return + */ + @ApiOperation("获取视频服务器设备播放路径") + @GetMapping("/getDeviceUrl") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceNumber", value = "设备编号"), + @ApiImplicitParam(name = "channelNum", value = "通道号") + }) + public R<Map<String, Object>> getDeviceUrl(String deviceNumber, Integer channelNum) { + return R.ok(monitorDeviceApiNewService.getDeviceUrl(deviceNumber, channelNum)); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java new file mode 100644 index 0000000..1052bb6 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java @@ -0,0 +1,43 @@ +package com.sinata.web.controller.applet; + +import com.sinata.common.core.domain.R; +import com.sinata.common.entity.PageDTO; +import com.sinata.system.domain.MwApplication; +import com.sinata.system.domain.query.MwCollectRecordQuery; +import com.sinata.system.domain.vo.MwCollectRecordVO; +import com.sinata.system.service.MwApplicationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * <p> + * 入驻申请 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-02 + */ +@Validated +@RestController +@Api(tags = {"入驻申请"}) +@RequiredArgsConstructor +@RequestMapping("/applet/mwApplication") +public class AppMwApplicationController { + private final MwApplicationService mwApplicationService; + + @ApiOperation("提交入驻申请") + @PostMapping("/set") + public R pageList(@Valid @RequestBody MwApplication mwApplication) { + mwApplication.setAuditStatus(1); + mwApplicationService.save(mwApplication); + return R.ok(); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCheckoutRecordController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCheckoutRecordController.java new file mode 100644 index 0000000..79d24ae --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCheckoutRecordController.java @@ -0,0 +1,150 @@ +package com.sinata.web.controller.applet; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.google.common.collect.Lists; +import java.util.Date; + +import com.sinata.common.core.domain.R; +import com.sinata.common.core.domain.entity.SysUser; +import com.sinata.common.entity.PageDTO; +import com.sinata.common.utils.SecurityUtils; +import com.sinata.system.domain.MwCheckoutRecord; +import com.sinata.system.domain.MwDisposalHandleRecord; +import com.sinata.system.domain.MwDisposalRecord; +import com.sinata.system.domain.MwTransitCar; +import com.sinata.system.domain.dto.CheckOutDto; +import com.sinata.system.domain.dto.CollectTotalUpDto; +import com.sinata.system.domain.query.CheckoutRecordQuery; +import com.sinata.system.domain.query.MwCheckoutRecordItemQuery; +import com.sinata.system.domain.query.MwTransitRecordQuery; +import com.sinata.system.domain.vo.MwCheckoutRecordVO; +import com.sinata.system.domain.vo.MwMedicalWasteBoxVO; +import com.sinata.system.domain.vo.MwTransitRecordVO; +import com.sinata.system.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.naming.ldap.PagedResultsControl; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +/** + * <p> + * 暂存间出库记录 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-02 + */ +@Api(tags = {"医院工作人员"}) +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/applet/mwCheckoutRecord") +public class AppMwCheckoutRecordController { + private final MwCheckoutRecordService mwCheckoutRecordService; + private final ISysUserService userService; + private final MwTransitCarService carService; + private final MwDisposalRecordService disposalRecordService; + private final MwDisposalHandleRecordService handleRecordService; + + + @ApiOperation(value = "出库统计上") + @PostMapping("/total") + public R<List<CollectTotalUpDto>> total(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysUser byId = userService.getById(sysUser.getUserId()); + return R.ok(mwCheckoutRecordService.totalUp(date,byId.getDepartmentId())); + } + + @ApiOperation(value = "接收统计上",tags = "处置人员") + @PostMapping("/out/total") + public R<List<CollectTotalUpDto>> outtotal(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date1,@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date2) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + return R.ok(mwCheckoutRecordService.totalUp2(date1,date2,sysUser.getUserId())); + } + @ApiOperation(value = "接收统计下",tags = "处置人员") + @PostMapping("/out/record") + public R<List<CheckOutDto>> record1(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date1,@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date2) { + SysUser sysUser1 = SecurityUtils.getLoginUser().getUser(); + SysUser sysUser = userService.getById(sysUser1.getUserId()); + LocalDate now = LocalDate.now(); + List<MwDisposalRecord> list = disposalRecordService.lambdaQuery().ge(date1!=null,MwDisposalRecord::getReceiveTime, date1).le(date2!=null,MwDisposalRecord::getReceiveTime,date2).eq(MwDisposalRecord::getDepartmentId, sysUser.getDepartmentId()).orderByDesc(MwDisposalRecord::getReceiveTime).list(); + List<CheckOutDto> backList = new ArrayList<>(); + for (MwDisposalRecord mwCheckoutRecord : list) { + CheckOutDto checkOutDto = new CheckOutDto(); + SysUser byId = userService.getById(mwCheckoutRecord.getDriverId()); + checkOutDto.setDriverName(byId.getNickName()); + MwTransitCar byId1 = carService.getById(mwCheckoutRecord.getCarId()); + checkOutDto.setLicensePlateNumber(byId1.getLicensePlateNumber()); + checkOutDto.setCheckoutTime(mwCheckoutRecord.getReceiveTime()); + List<CollectTotalUpDto> records = mwCheckoutRecordService.totalUp6(mwCheckoutRecord.getId()); + checkOutDto.setRecords(records); + backList.add(checkOutDto); + } + return R.ok(backList); + } + + @ApiOperation(value = "处置统计上",tags = "处置人员") + @PostMapping("/end/total") + public R<List<CollectTotalUpDto>> outtotal1(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date1, @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date2) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + return R.ok(mwCheckoutRecordService.totalUp2(date1,date2,sysUser.getUserId())); + } + + @ApiOperation(value = "处置统下",tags = "处置人员") + @PostMapping("/end/record") + public R<List<CheckOutDto>> record2(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date1,@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date2) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + LocalDate now = LocalDate.now(); + List<MwDisposalHandleRecord> list = handleRecordService.lambdaQuery().ge(date1!=null,MwDisposalHandleRecord::getDisposalTime, date1).le(date2!=null,MwDisposalHandleRecord::getDisposalTime,date2).eq(MwDisposalHandleRecord::getDepartmentId, sysUser.getDepartmentId()).orderByDesc(MwDisposalHandleRecord::getDisposalTime).list(); + List<CheckOutDto> backList = new ArrayList<>(); + for (MwDisposalHandleRecord mwCheckoutRecord : list) { + CheckOutDto checkOutDto = new CheckOutDto(); + SysUser byId = userService.getById(mwCheckoutRecord.getDriverId()); + checkOutDto.setDriverName(byId.getNickName()); + MwTransitCar byId1 = carService.getById(mwCheckoutRecord.getCarId()); + checkOutDto.setLicensePlateNumber(byId1.getLicensePlateNumber()); + checkOutDto.setCheckoutTime(mwCheckoutRecord.getDisposalTime()); + List<CollectTotalUpDto> records = mwCheckoutRecordService.totalUp1(mwCheckoutRecord.getId()); + checkOutDto.setRecords(records); + backList.add(checkOutDto); + } + return R.ok(backList); + } + + + + + @ApiOperation(value = "出库统计下") + @PostMapping("/record") + public R<List<CheckOutDto>> record() { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysUser byId2 = userService.getById(sysUser.getUserId()); + LocalDate now = LocalDate.now(); + List<MwCheckoutRecord> list = mwCheckoutRecordService.lambdaQuery().eq(MwCheckoutRecord::getDepartmentId, byId2.getDepartmentId()).orderByDesc(MwCheckoutRecord::getCheckoutTime).list(); + List<CheckOutDto> backList = new ArrayList<>(); + for (MwCheckoutRecord mwCheckoutRecord : list) { + CheckOutDto checkOutDto = new CheckOutDto(); + SysUser byId = userService.getById(mwCheckoutRecord.getDriverId()); + checkOutDto.setDriverName(byId.getNickName()); + MwTransitCar byId1 = carService.getById(mwCheckoutRecord.getCarId()); + checkOutDto.setLicensePlateNumber(byId1.getLicensePlateNumber()); + checkOutDto.setCheckoutTime(mwCheckoutRecord.getCheckoutTime()); + List<CollectTotalUpDto> records = mwCheckoutRecordService.totalUp1(mwCheckoutRecord.getId()); + checkOutDto.setRecords(records); + backList.add(checkOutDto); + } + return R.ok(backList); + } + + +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java new file mode 100644 index 0000000..097d264 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java @@ -0,0 +1,444 @@ +package com.sinata.web.controller.applet; +import java.util.Date; +import java.math.BigDecimal; +import java.util.*; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.sinata.common.core.domain.R; +import com.sinata.common.core.domain.entity.SysDictData; +import com.sinata.common.core.domain.entity.SysUser; +import com.sinata.common.entity.PageDTO; +import com.sinata.common.utils.SecurityUtils; +import com.sinata.system.domain.*; +import com.sinata.system.domain.dto.*; +import com.sinata.system.domain.query.MwCollectRecordQuery; +import com.sinata.system.domain.vo.MedicalWasteProcessVO; +import com.sinata.system.domain.vo.MwCollectRecordVO; +import com.sinata.system.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.time.LocalDate; + +/** + * <p> + * 暂存间入库记录 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-02 + */ +@Validated +@RestController +@Api(tags = {"医院工作人员"}) +@RequiredArgsConstructor +@RequestMapping("/applet/mwCollectRecord") + +public class AppMwCollectRecordController { + private final MwCollectRecordService collectRecordService; + @Autowired + private ISysUserService userService; + private final MwBoxService boxService; + private final MwCheckoutRecordService checkoutRecordService; + private final MwCheckoutRecordItemService checkoutRecordItemService; + private final SysDepartmentService departmentService; + private final MwDisposalRecordService disposalRecordService; + private final MwDisposalRecordItemService disposalRecordItemService; + private final MwDisposalHandleRecordService disposalHandleRecordService; + private final MwDisposalHandleRecordItemService disposalHandleRecordItemService; + private final MwStagingRoomService roomService; + private final ISysDictDataService dictDataService; + private final MwTransitCarService carService; + + + @ApiOperation(value = "新增医废记录") + @PostMapping("/add") + public R<?> add(@Valid @RequestBody MwCollectRecord mwCollectRecord) { + SysUser sysUser1 = SecurityUtils.getLoginUser().getUser(); + SysUser sysUser = userService.getById(sysUser1.getUserId()); + + MwBox one = boxService.lambdaQuery().eq(MwBox::getBoxNumber, mwCollectRecord.getBoxNumber()).one(); + if (one==null){ + return R.fail("当前转运箱不存在"); + } + one.setLink(1); + one.setLastUseTime(new Date()); + boxService.updateById(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()); + mwCollectRecord.setBoxTime(new Date()); + + // 创建一个随机数生成器实例 + Random random = new Random(); + + // 生成一个6位数范围内的随机整数(100000 到 999999) + int randomNumber = 10000000 + random.nextInt(90000000); + mwCollectRecord.setMedicalWasteNumber(String.valueOf(randomNumber)); + + SysDictData medicalWasteType = dictDataService.getById(mwCollectRecord.getWasteType()); + if (medicalWasteType!=null){ + mwCollectRecord.setWasteTypeStr(medicalWasteType.getDictLabel()); + } + collectRecordService.save(mwCollectRecord); + return R.ok(); + } + + @ApiOperation(value = "扫描箱号获取医废",tags = "运输人员") + @PostMapping("/box/list") + public R<List<CollectDto>> boxlist(@RequestParam String boxNumber) { + List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus,1).eq(MwCollectRecord::getBoxNumber, boxNumber).list(); + if (list.isEmpty()){ + return R.ok(); + } + Long departmentId = list.get(0).getDepartmentId(); + List<CollectDto> collectDtos = collectRecordService.getGroup1(boxNumber,departmentId); + for (CollectDto collectDto : collectDtos) { + collectDto.setDepartmentName(departmentService.getById(departmentId).getDepartmentName()); + } + return R.ok(collectDtos); + } + + @ApiOperation(value = "装车",tags = "运输人员") + @PostMapping("/box/collect") + public R<List<CollectDto>> collect(@RequestBody SignCollectDto signCollectDto) { + SysUser sysUser1 = SecurityUtils.getLoginUser().getUser(); + SysUser sysUser = userService.getById(sysUser1.getUserId()); + //将收集记录的状态改变 + List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus,1).in(MwCollectRecord::getBoxNumber, signCollectDto.getBoxNumbers()).list(); + if (list.isEmpty()){ + return R.ok(); + } + Set<String> boxes = new HashSet<>(); + BigDecimal sum = new BigDecimal(0); + for (MwCollectRecord mwCollectRecord : list) { + mwCollectRecord.setStatus(2); + mwCollectRecord.setCheckoutUserId(sysUser.getUserId()); + mwCollectRecord.setCheckoutTime(new Date()); + mwCollectRecord.setDriverId(sysUser.getUserId()); + mwCollectRecord.setCarId(sysUser.getCarId()); + boxes.add(mwCollectRecord.getBoxNumber()); + sum= sum.add(mwCollectRecord.getWeight()); + } + //插入入库记录以及中间表数据 + MwCheckoutRecord mwCheckoutRecord = new MwCheckoutRecord(); + mwCheckoutRecord.setCheckoutTime(new Date()); + mwCheckoutRecord.setDepartmentId(list.get(0).getDepartmentId()); + mwCheckoutRecord.setHospitalName(list.get(0).getHospitalName()); + mwCheckoutRecord.setStagingRoomId(list.get(0).getStagingRoomId()); + mwCheckoutRecord.setHospitalSignature(signCollectDto.getSignUrl()); + mwCheckoutRecord.setDriverId(sysUser.getUserId()); + mwCheckoutRecord.setCarId(sysUser.getCarId()); + mwCheckoutRecord.setBoxNum(boxes.size()); + mwCheckoutRecord.setBagNum(list.size()); + mwCheckoutRecord.setTotalWeight(sum); + checkoutRecordService.save(mwCheckoutRecord); + //插入中间表数据 + List<MwCheckoutRecordItem> recordItems = new ArrayList<>(); + for (MwCollectRecord mwCollectRecord : list) { + MwCheckoutRecordItem mwCheckoutRecordItem = new MwCheckoutRecordItem(); + mwCheckoutRecordItem.setCollectRecordId(mwCollectRecord.getId()); + mwCheckoutRecordItem.setCheckoutRecordId(mwCheckoutRecord.getId()); + recordItems.add(mwCheckoutRecordItem); + } + checkoutRecordItemService.saveBatch(recordItems); + collectRecordService.updateBatchById(list); + MwBox byId = boxService.getById(list.get(0).getStagingRoomId()); + byId.setLink(2); + boxService.updateById(byId); + return R.ok(); + + } + + @ApiOperation(value = "运输统计上",tags = "运输人员") + @PostMapping("/trans/collect/total") + public R<List<CollectTotalUpDto>> tanscollecttotal1(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + return R.ok(collectRecordService.collectTotal1(date,sysUser.getUserId(),null)); + } + + @ApiOperation(value = "运输统计上(医院数量)",tags = "运输人员") + @PostMapping("/trans/collect/hospital/count") + public R<Long> tanscollecttotal12(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + Long count = collectRecordService.lambdaQuery().eq(date!=null,MwCollectRecord::getCheckoutTime,date).eq(MwCollectRecord::getCheckoutUserId, sysUser.getUserId()).groupBy(MwCollectRecord::getDepartmentId).count(); + return R.ok(count); + } + + @ApiOperation(value = "运输统计下",tags = "运输人员") + @PostMapping("/trans/down/collect/total") + public R<List<HospitalCollectTotalUpDto>> tanscollecttotal2(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + //先获取医院ids + List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(date!=null,MwCollectRecord::getCheckoutTime,date).eq(MwCollectRecord::getCheckoutUserId, sysUser.getUserId()).groupBy(MwCollectRecord::getDepartmentId).list(); + //循环医院,然后放入 + List<HospitalCollectTotalUpDto> list1 = new ArrayList<>(); + for (MwCollectRecord mwCollectRecord : list) { + List<CollectTotalUpDto> collectTotalUpDtos = collectRecordService.collectTotal1(date, sysUser.getUserId(), mwCollectRecord.getDepartmentId()); + HospitalCollectTotalUpDto hospitalCollectTotalUpDto = new HospitalCollectTotalUpDto(); + hospitalCollectTotalUpDto.setHospitalName(mwCollectRecord.getHospitalName()); + hospitalCollectTotalUpDto.setCollectTotalUpDtos(collectTotalUpDtos); + list1.add(hospitalCollectTotalUpDto); + } + return R.ok(list1); + } + + @ApiOperation(value = "扫码接收列表",tags = "处置人员") + @PostMapping("/end/down/collect/total") + public R<List<HospitalCollectTotalUp1Dto>> 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(); + //循环医院,然后放入 + List<HospitalCollectTotalUp1Dto> list1 = new ArrayList<>(); + for (MwCollectRecord mwCollectRecord : list) { + List<CollectDto> collectTotalUpDtos = collectRecordService.getGroup2(null, mwCollectRecord.getDepartmentId()); + HospitalCollectTotalUp1Dto hospitalCollectTotalUpDto = new HospitalCollectTotalUp1Dto(); + hospitalCollectTotalUpDto.setHospitalName(mwCollectRecord.getHospitalName()); + hospitalCollectTotalUpDto.setCollectTotalUpDtos(collectTotalUpDtos); + list1.add(hospitalCollectTotalUpDto); + } + return R.ok(list1); + } + + @ApiOperation(value = "获取车辆",tags = "处置人员") + @PostMapping("/end/down/collect/car") + public R<CarDto> tanscollecttotal7(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(); + } + MwTransitCar byId = carService.getById(one.getCarId()); + SysUser one1 = userService.lambdaQuery().eq(SysUser::getCarId, byId.getId()).one(); + CarDto carDto = new CarDto(); + carDto.setLicensePlateNumber(byId.getLicensePlateNumber()); + carDto.setUserName(one1.getUserName()); + return R.ok(carDto); + } + + + @ApiOperation(value = "扫码接收列表上获取医院",tags = "处置人员") + @PostMapping("/end/down/collect/up") + public R<SysDepartment> tanscollecttotal4(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(); + } + SysDepartment byId = departmentService.getById(one.getDepartmentId()); + return R.ok(byId); + } + + @ApiOperation(value = "确认接受",tags = "处置人员") + @PostMapping("/end/down/collect/confirm") + public R tanscollecttotal4(@RequestBody BoxListDto boxListDto) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysDepartment byId = departmentService.getById(sysUser.getDepartmentId()); + //将record变为已接受 + List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus,2).in(MwCollectRecord::getBoxNumber, boxListDto.getBoxNum()).list(); + if (list.isEmpty()){ + return R.ok(); + } + + Set<String> boxes = new HashSet<>(); + BigDecimal receiveQuantity = BigDecimal.ZERO; + for (MwCollectRecord mwCollectRecord : list) { + mwCollectRecord.setStatus(3); + boxes.add(mwCollectRecord.getBoxNumber()); + mwCollectRecord.setReceiveUserId(sysUser.getUserId()); + mwCollectRecord.setReceiveTime(new Date()); + mwCollectRecord.setReceiveDepartmentId(sysUser.getDepartmentId()); + receiveQuantity = receiveQuantity.add(mwCollectRecord.getWeight()); + } + collectRecordService.updateBatchById(list); + //插入接收记录以及子表 + MwDisposalRecord mwDisposalRecord = new MwDisposalRecord(); + mwDisposalRecord.setDepartmentId(sysUser.getDepartmentId()); + mwDisposalRecord.setDisposalUnitName(byId.getDepartmentName()); + mwDisposalRecord.setReceiveQuantity(boxes.size()); + mwDisposalRecord.setReceiveTime(new Date()); + mwDisposalRecord.setReceiveWeight(receiveQuantity); + mwDisposalRecord.setReceiverId(sysUser.getUserId()); + mwDisposalRecord.setUnloadQuantity(boxes.size()); + mwDisposalRecord.setUnloadWeight(receiveQuantity); + mwDisposalRecord.setTotalHandledQuantity(list.size()); + mwDisposalRecord.setDisposalFlag(0); + mwDisposalRecord.setTotalHandledWeight(receiveQuantity); + mwDisposalRecord.setDriverId(list.get(0).getDriverId()); + mwDisposalRecord.setCarId(list.get(0).getCarId()); + disposalRecordService.save(mwDisposalRecord); + //插入子表 + List<MwDisposalRecordItem> items = new ArrayList<>(); + for (MwCollectRecord mwCollectRecord : list) { + MwDisposalRecordItem mwDisposalRecordItem = new MwDisposalRecordItem(); + mwDisposalRecordItem.setCollectRecordId(mwCollectRecord.getId()); + mwDisposalRecordItem.setDisposalRecordId(mwDisposalRecord.getId()); + items.add(mwDisposalRecordItem); + } + + + + disposalRecordItemService.saveBatch(items); + return R.ok(); + } + + @ApiOperation(value = "待处置列表",tags = "处置人员") + @PostMapping("/wait/list") + public R<List<CollectDto>> list1(String boxNumber) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysUser byId = userService.getById(sysUser.getUserId()); + List<CollectDto> collectDtos = collectRecordService.getGroupWithStatus(boxNumber,byId.getDepartmentId(),3); + return R.ok(collectDtos); + } + @ApiOperation(value = "处置操作",tags = "处置人员") + @PostMapping("/wait/out") + public R<List<CollectDto>> list2(@RequestBody BoxListDto boxListDto) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysDepartment byId = departmentService.getById(sysUser.getDepartmentId()); + List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus, 3).in(MwCollectRecord::getBoxNumber, boxListDto.getBoxNum()).list(); + if (list.isEmpty()){ + return R.ok(); + } + //新增处置记录 + MwDisposalHandleRecord mwDisposalHandleRecord = new MwDisposalHandleRecord(); + mwDisposalHandleRecord.setDepartmentId(byId.getId()); + mwDisposalHandleRecord.setDisposalUnitName(byId.getDepartmentName()); + mwDisposalHandleRecord.setDisposalTime(new Date()); + mwDisposalHandleRecord.setDisposalUserId(sysUser.getUserId()); + mwDisposalHandleRecord.setDriverId(list.get(0).getDriverId()); + mwDisposalHandleRecord.setCarId(list.get(0).getCarId()); + disposalHandleRecordService.save(mwDisposalHandleRecord); + //将收集记录以及子表改变为已处置 + if (!list.isEmpty()) { + List<Long> ids = new ArrayList<>(); + List<MwDisposalHandleRecordItem> mwDisposalHandleRecordItems = new ArrayList<>(); + for (MwCollectRecord mwCollectRecord : list) { + ids.add(mwCollectRecord.getId()); + mwCollectRecord.setStatus(4); + mwCollectRecord.setDisposalUserId(sysUser.getUserId()); + mwCollectRecord.setDisposalTime(new Date()); + MwDisposalHandleRecordItem mwDisposalHandleRecordItem = new MwDisposalHandleRecordItem(); + mwDisposalHandleRecordItem.setCollectRecordId(mwCollectRecord.getId()); + mwDisposalHandleRecordItem.setDisposalRecordId(mwDisposalHandleRecord.getId()); + mwDisposalHandleRecordItems.add(mwDisposalHandleRecordItem); + } +// disposalHandleRecordItemService.saveBatch(mwDisposalHandleRecordItems); + collectRecordService.updateBatchById(list); + } +// //将接收记录以及子表变为已处置 +// List<MwDisposalRecordItem> list1 = disposalRecordItemService.lambdaQuery().in(MwDisposalRecordItem::getCollectRecordId, ids).list(); +// if (!list1.isEmpty()){ +// List<Long> ids2 = new ArrayList<>(); +// for (MwDisposalRecordItem mwDisposalRecordItem : list1) { +// mwDisposalRecordItem.setDisposalFlag(1); +// mwDisposalRecordItem.setDisposalUserId(sysUser.getUserId()); +// mwDisposalRecordItem.setDisposalTime(new Date()); +// ids2.add(mwDisposalRecordItem.getId()); +// } +// disposalRecordItemService.updateBatchById(list1); +// List<MwDisposalRecord> list2 = disposalRecordService.lambdaQuery().in(MwDisposalRecord::getId, ids2).list(); +// for (MwDisposalRecord mwDisposalRecord : list2) { +// mwDisposalRecord.setDisposalFlag(1); +// mwDisposalRecord.setDisposalTime(new Date()); +// mwDisposalRecord.setDisposalUserId(sysUser.getUserId()); +// } +// disposalRecordService.updateBatchById(list2); +// } +// } +// MwBox byId1 = boxService.getById(list.get(0).getStagingRoomId()); +// byId1.setLink(4); +// boxService.updateById(byId1); + return R.ok(); + } + + + + + @ApiOperation(value = "已装车列表",tags = "运输人员") + @PostMapping("/box/has/collect") + public R<List<CollectCarTotalUpDto>> hascollect(String name) { + //获取车辆id + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysUser byId = userService.getById(sysUser.getUserId()); + //通过车辆id查询列表 + List<CollectCarTotalUpDto> list = collectRecordService.carGroup(byId.getCarId(),name); + return R.ok(list); + + } + + @ApiOperation(value = "已装车列表详情",tags = "运输人员") + @PostMapping("/box/has/collect/detail") + public R<List<CollectDto>> hascollectdetail(@RequestParam Long hospitalId) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysUser byId = userService.getById(sysUser.getUserId()); + List<CollectDto> collectDtos = collectRecordService.getGroup3(null,hospitalId,byId.getCarId()); + return R.ok(collectDtos); + } + + @ApiOperation("库存信息") + @PostMapping("/list") + public R<List<CollectDto>> list(String boxNumber) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + List<CollectDto> collectDtos = collectRecordService.getGroup(boxNumber,sysUser.getDepartmentId()); + return R.ok(collectDtos); + } + @ApiOperation("收集详情") + @PostMapping("/record") + public R<List<MwCollectRecord>> record(@RequestParam String boxNumber) { + List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getBoxNumber, boxNumber).orderByDesc(MwCollectRecord::getCollectTime).list(); + return R.ok(list); + } + + @ApiOperation("收集统计上") + @PostMapping("/collect/total") + public R<List<CollectTotalUpDto>> collecttotal1(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysUser byId = userService.getById(sysUser.getUserId()); + return R.ok(collectRecordService.collectTotal(date,byId.getDepartmentId())); + } + @ApiOperation("收集统计下") + @PostMapping("/collect/down/total") + public R<Page<MwCollectRecord>> collecttotal2(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate date,@RequestParam Integer pageNum, @RequestParam Integer pageSize) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysUser byId = userService.getById(sysUser.getUserId()); + + Page<MwCollectRecord> page = collectRecordService.lambdaQuery().eq(date!=null,MwCollectRecord::getCollectTime,date).eq(MwCollectRecord::getDepartmentId, byId.getDepartmentId()).orderByDesc(MwCollectRecord::getCollectTime).page(Page.of(pageNum, pageSize)); + return R.ok(page); + } + + + @ApiOperation("库存信息底部统计") + @PostMapping("/total") + public R<CollectTotalDto> total(String boxNumber) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + SysUser byId = userService.getById(sysUser.getUserId()); + CollectTotalDto collectTotalDto = new CollectTotalDto(); + List<CollectDto> collectDtos = collectRecordService.getGroup(boxNumber,byId.getDepartmentId()); + for (CollectDto collectDto : collectDtos) { + collectTotalDto.setBoxNum(collectTotalDto.getBoxNum()+1); + collectTotalDto.setCarNum(collectTotalDto.getCarNum()+collectDto.getNum()); + collectTotalDto.setWeight(collectTotalDto.getWeight().add(collectDto.getWeight())); + } + return R.ok(collectTotalDto); + } + +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwTransitRouteController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwTransitRouteController.java new file mode 100644 index 0000000..5bf20c9 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwTransitRouteController.java @@ -0,0 +1,92 @@ +package com.sinata.web.controller.applet; + +import com.sinata.common.core.domain.R; +import com.sinata.common.core.domain.entity.SysUser; +import com.sinata.common.entity.PageDTO; +import com.sinata.common.utils.SecurityUtils; +import com.sinata.system.domain.MwTransitRoute; +import com.sinata.system.domain.MwTransitRouteCar; +import com.sinata.system.domain.MwTransitRoutePoints; +import com.sinata.system.domain.SysDepartment; +import com.sinata.system.domain.dto.MwTransitRouteDTO; +import com.sinata.system.domain.query.MwTransitRouteQuery; +import com.sinata.system.domain.vo.MwTransitRouteVO; +import com.sinata.system.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; + +/** + * <p> + * 转运线路 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-02 + */ +@Validated +@RestController +@RequiredArgsConstructor +@Api(tags = {"运输路线"}) +@RequestMapping("/applet/mwTransitRoute") +public class AppMwTransitRouteController { + private final MwTransitRouteService mwTransitRouteService; + private final MwTransitRouteCarService transitRouteCarService; + private final MwTransitRoutePointsService pointsService; + private final SysDepartmentService departmentService; + private final ISysUserService userService; + + /** + * 分页列表 + * + * @param query + * @return + */ + + @ApiOperation("线路列表") + @PostMapping("/line") + public R<List<MwTransitRoute>> line() { + //获取当前用户的车辆 + SysUser sysUser1 = SecurityUtils.getLoginUser().getUser(); + SysUser sysUser = userService.getById(sysUser1.getUserId()); + Long carId = sysUser.getCarId(); + //根据车辆获取线路列表 + List<MwTransitRouteCar> list = transitRouteCarService.lambdaQuery().eq(MwTransitRouteCar::getCarId, carId).list(); + List<Long> routeIds = new ArrayList<>(); + for (MwTransitRouteCar mwTransitRouteCar : list) { + routeIds.add(mwTransitRouteCar.getRouteId()); + } + if (routeIds.isEmpty()){ + return R.ok(); + } + + List<MwTransitRoute> list1 = mwTransitRouteService.lambdaQuery().in(MwTransitRoute::getId, routeIds).list(); + for (MwTransitRoute mwTransitRoute : list1) { + SysDepartment byId = departmentService.getById(mwTransitRoute.getDepartmentId()); + if (byId != null) { + mwTransitRoute.setHospitalName(byId.getDepartmentName()); + } + } + return R.ok(list1); + } + @ApiOperation("获取途径点") + @PostMapping("/get") + public R<List<MwTransitRoutePoints>> pageList(@RequestParam Long routeId) { + List<MwTransitRoutePoints> list1 = pointsService.lambdaQuery().eq(MwTransitRoutePoints::getRouteId, routeId).orderByAsc(MwTransitRoutePoints::getSortOrder).list(); + for (MwTransitRoutePoints mwTransitRoutePoints : list1) { + SysDepartment byId = departmentService.getById(mwTransitRoutePoints.getDepartmentId()); + mwTransitRoutePoints.setDepartmentName(byId.getDepartmentName()); + } + return R.ok(list1); + } + + + +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwWarningRecordController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwWarningRecordController.java new file mode 100644 index 0000000..00e8a13 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwWarningRecordController.java @@ -0,0 +1,66 @@ +package com.sinata.web.controller.applet; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.sinata.common.core.domain.R; +import com.sinata.common.core.domain.entity.SysUser; +import com.sinata.common.utils.SecurityUtils; +import com.sinata.system.domain.MwWarningRecord; +import com.sinata.system.domain.SysDepartment; +import com.sinata.system.domain.dto.CollectTotalUpDto; +import com.sinata.system.service.MwWarningRecordService; +import com.sinata.system.service.SysDepartmentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDate; +import java.util.List; + +/** + * <p> + * 预警记录表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-02 + */ +@RestController +@RequestMapping("/applet/mwWarningRecord") +@Api(tags = {"医院工作人员"}) +@AllArgsConstructor +public class AppMwWarningRecordController { + private final MwWarningRecordService mwWarningRecordService; + private final SysDepartmentService sysDepartmentService; + + @ApiOperation("预警记录") + @PostMapping("/record") + public R<Page<MwWarningRecord>> record(@RequestParam Integer pageNum,@RequestParam Integer pageSize) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + Page<MwWarningRecord> page = mwWarningRecordService.lambdaQuery().eq(MwWarningRecord::getDepartmentId, sysUser.getDepartmentId()).page(Page.of(pageNum, pageSize)); + return R.ok(page); + } + + @ApiOperation(value = "预警统计",tags = "监管人员") + @PostMapping("/danger") + public R<List<SysDepartment>> danger(String name) { + // + List<SysDepartment> list = sysDepartmentService.lambdaQuery().like(name!=null,SysDepartment::getDepartmentName,name).eq(SysDepartment::getOrgType, 2).list(); + for (SysDepartment sysDepartment : list) { + sysDepartment.setDangerCount(mwWarningRecordService.lambdaQuery().eq(MwWarningRecord::getDepartmentId,sysDepartment.getId()).count()); + } + return R.ok(list); + } + + + @ApiOperation(value = "预警统计详情",tags = "监管人员") + @PostMapping("/detail/record") + public R<Page<MwWarningRecord>> record1(@RequestParam Long id,@RequestParam Integer pageNum,@RequestParam Integer pageSize) { + Page<MwWarningRecord> page = mwWarningRecordService.lambdaQuery().eq(MwWarningRecord::getDepartmentId, id).page(Page.of(pageNum, pageSize)); + return R.ok(page); + } + +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppRegulatoryRecordController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppRegulatoryRecordController.java new file mode 100644 index 0000000..dc90128 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppRegulatoryRecordController.java @@ -0,0 +1,96 @@ +package com.sinata.web.controller.applet; + +import com.sinata.common.core.domain.R; +import com.sinata.common.entity.PageDTO; +import com.sinata.system.domain.dto.MwRegulatoryRecordDTO; +import com.sinata.system.domain.query.MwRegulatoryRecordQuery; +import com.sinata.system.domain.vo.MwRegulatoryRecordVO; +import com.sinata.system.service.MwRegulatoryRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + * <p> + * 红黄码监管记录 前端控制器 + * </p> + * + * @author mitao + * @since 2024-12-02 + */ +@Validated +@RestController +@RequiredArgsConstructor +@Api(tags = {"监管人员执法记录"}) +@RequestMapping("/applet/mwRegulatoryRecord") +public class AppRegulatoryRecordController { + private final MwRegulatoryRecordService mwRegulatoryRecordService; + + /** + * 分页列表 + * + * @param query + * @return + */ + @ApiOperation("分页列表") + @PostMapping("/page") + public R<PageDTO<MwRegulatoryRecordVO>> pageList(@Valid @RequestBody MwRegulatoryRecordQuery query) { + return R.ok(mwRegulatoryRecordService.pageList(query)); + } + + /** + * 详情 + * + * @param id + * @return + */ + @ApiOperation("详情") + @GetMapping("/{id}") + public R<MwRegulatoryRecordVO> detail(@ApiParam(name = "id", value = "检查记录id", required = true) @PathVariable("id") Long id) { + return R.ok(mwRegulatoryRecordService.detail(id)); + } + + /** + * 新增检查记录 + * + * @param dto + * @return + */ + @ApiOperation("新增检查记录") + @PostMapping("/add") + public R<?> add(@Valid @RequestBody MwRegulatoryRecordDTO dto) { + mwRegulatoryRecordService.add(dto); + return R.ok(); + } + + /** + * 编辑检查记录 + * + * @param dto + * @return + */ + @ApiOperation("编辑检查记录") + @PostMapping("/edit") + public R<?> edit(@Valid @RequestBody MwRegulatoryRecordDTO dto) { + mwRegulatoryRecordService.edit(dto); + return R.ok(); + } + + /** + * 删除 + * + * @param id + * @return + */ + @ApiOperation("删除") + @DeleteMapping("/{id}") + public R<?> delete(@ApiParam(name = "id", value = "检查记录id", required = true) @PathVariable("id") Long id) { + mwRegulatoryRecordService.delete(id); + return R.ok(); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppUserController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppUserController.java new file mode 100644 index 0000000..176e142 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppUserController.java @@ -0,0 +1,111 @@ +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.SysDept; +import com.sinata.common.core.domain.entity.SysRole; +import com.sinata.common.core.domain.entity.SysUser; +import com.sinata.common.core.page.TableDataInfo; +import com.sinata.common.entity.PageDTO; +import com.sinata.common.enums.BusinessType; +import com.sinata.common.utils.SecurityUtils; +import com.sinata.common.utils.StringUtils; +import com.sinata.common.utils.poi.ExcelUtil; +import com.sinata.system.domain.MwApplication; +import com.sinata.system.domain.MwTransitCar; +import com.sinata.system.domain.dto.SysUserDTO; +import com.sinata.system.domain.dto.SysUserStatusDTO; +import com.sinata.system.domain.query.SysUserQuery; +import com.sinata.system.domain.vo.SysUserVO; +import com.sinata.system.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用户信息 + * + * @author ruoyi + */ +@Validated +@RestController +@RequestMapping("/applet/user") +@AllArgsConstructor +public class AppUserController extends BaseController +{ + private final MwTransitCarService carService; + private final ISysUserService userService; + @ApiOperation(value = "获取绑定车辆",tags = "运输人员") + @PostMapping("/car") + public R<MwTransitCar> car() { + SysUser user = SecurityUtils.getLoginUser().getUser(); + SysUser sysUser = userService.getById(user.getUserId()); + + if (sysUser.getCarId()==null){ + return R.fail("当前暂无绑定车辆,请绑定后操作"); + } + MwTransitCar byId = carService.getById(sysUser.getCarId()); + return R.ok(byId); + } + + @ApiOperation(value = "获取车辆列表",tags = "运输人员") + @PostMapping("/list") + public R<List<MwTransitCar>> list() { + List<MwTransitCar> list = carService.list(); + return R.ok(list); + } + + @ApiOperation(value = "更换绑定车辆",tags = "运输人员") + @PostMapping("/change") + public R<List<MwTransitCar>> change(@RequestParam Long carId) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + + SysUser byId = userService.getById(sysUser.getUserId()); + byId.setCarId(carId); + userService.updateById(byId); + return R.ok(); + } + + @ApiOperation(value = "绑定前校验",tags = "运输人员") + @PostMapping("/check") + public R<SysUser> check(@RequestParam Long carId) { + SysUser one = userService.lambdaQuery().eq(SysUser::getCarId, carId).one(); + if (one!=null){ + return R.fail(one); + }else { + return R.ok(); + } + + + } + + @ApiOperation(value = "取消绑定",tags = "运输人员") + @PostMapping("/cancel") + public R<SysUser> cancel() { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + sysUser.setCarId(-1L); + userService.updateById(sysUser); + return R.ok(); + + } + + + + + + +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppletDictDataController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppletDictDataController.java new file mode 100644 index 0000000..ead5821 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppletDictDataController.java @@ -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(); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/CapacityUtil.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/CapacityUtil.java new file mode 100644 index 0000000..feb6638 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/CapacityUtil.java @@ -0,0 +1,37 @@ +package com.sinata.web.controller.tool; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class CapacityUtil { + + /** + * 计算已存数量占最大容量的百分比,并保留两位小数 + * + * @param count 已存数量 + * @param maxCapacity 最大容量 + * @return 百分比(保留两位小数) + */ + public static String calculatePercentage(Long count, Integer maxCapacity) { + if (maxCapacity == null || maxCapacity <= 0) { + throw new IllegalArgumentException("Max capacity must be greater than 0."); + } + + // 使用 BigDecimal 进行精确计算 + BigDecimal countBD = new BigDecimal(count); + BigDecimal maxCapacityBD = new BigDecimal(maxCapacity); + BigDecimal percentage = countBD.divide(maxCapacityBD, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); + + // 保留两位小数 + return percentage.setScale(2, RoundingMode.HALF_UP).toString() + "%"; + } + + // 示例用法 + public static void main(String[] args) { + Long count = 75L; // 示例已存数量 + Integer maxCapacity = 100; // 示例最大容量 + + // 计算并打印百分比 + System.out.println(calculatePercentage(count, maxCapacity)); // 输出 "75.00%" + } +} \ No newline at end of file diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/AES.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/AES.java new file mode 100644 index 0000000..335126d --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/AES.java @@ -0,0 +1,72 @@ +package com.sinata.web.controller.tool.weChat; + +import org.bouncycastle.jce.provider.BouncyCastleProvider; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.security.*; + +/** +* AES加密 +* @author pzb +* @Date 2021/12/3 15:43 +*/ +public class AES { + + public static boolean initialized = false; + + /** + * AES解密 + * + * @param content + * 密文 + * @return + * @throws InvalidAlgorithmParameterException + * @throws NoSuchProviderException + */ + public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException { + initialize(); + try { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); + Key sKeySpec = new SecretKeySpec(keyByte, "AES"); + cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化 + byte[] result = cipher.doFinal(content); + return result; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (NoSuchPaddingException e) { + e.printStackTrace(); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } catch (NoSuchProviderException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + public static void initialize() { + if (initialized) + return; + Security.addProvider(new BouncyCastleProvider()); + initialized = true; + } + + // 生成iv + public static AlgorithmParameters generateIV(byte[] iv) throws Exception { + AlgorithmParameters params = AlgorithmParameters.getInstance("AES"); + params.init(new IvParameterSpec(iv)); + return params; + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/EnvVersion.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/EnvVersion.java new file mode 100644 index 0000000..e4b31ff --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/EnvVersion.java @@ -0,0 +1,35 @@ +package com.sinata.web.controller.tool.weChat; + +/** + * @author zhibing.pu + * @Date 2024/12/10 15:56 + */ +public enum EnvVersion { + /** + * 开发版 + */ + DEVELOP("develop"), + /** + * 体验版 + */ + TRIAL("trial"), + /** + * 线上版本 + */ + RELEASE("release"); + + + EnvVersion(String version) { + this.version = version; + } + + private String version; + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WXCore.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WXCore.java new file mode 100644 index 0000000..cb1cb59 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WXCore.java @@ -0,0 +1,48 @@ +package com.sinata.web.controller.tool.weChat; + +import org.apache.commons.codec.binary.Base64; +import org.springframework.beans.factory.annotation.Value; + +public class WXCore { + + private static final String WATERMARK = "watermark"; + + @Value("${wx.appletsAppid}") + private static String appid ; + + + + /** + * 解密数据 + * @return + * @throws Exception + */ + public static String decrypt(String encryptedData, String sessionKey, String iv){ + String result = ""; + try { + AES aes = new AES(); + byte[] resultByte = aes.decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv)); + if(null != resultByte && resultByte.length > 0){ + result = new String(WxPKCS7Encoder.decode(resultByte), "UTF-8"); +// JSONObject jsonObject = JSON.parseObject(result); +// String decryptAppid = jsonObject.getJSONObject(WATERMARK).getString("appid"); +// if(!appid.equals(decryptAppid)){ +// result = ""; +// } + } + } catch (Exception e) { + result = ""; + e.printStackTrace(); + } + return result; + } + + + public static void main(String[] args) throws Exception{ + String appId = "wx4f4bc4dec97d474b"; + String encryptedData = "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew=="; + String sessionKey = "tiihtNczf5v6AKRyjwEUhQ=="; + String iv = "r7BXXKkLb8qrSNn05n0qiA=="; + System.out.println(decrypt(encryptedData, sessionKey, iv)); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WeChatUtil.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WeChatUtil.java new file mode 100644 index 0000000..cecc3d8 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WeChatUtil.java @@ -0,0 +1,80 @@ +package com.sinata.web.controller.tool.weChat; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * 微信工具类 + */ +@Slf4j +@Component +public class WeChatUtil { + + @Value("456") + private String wxAppletsAppid; + + @Value("123") + private String wxAppletsAppSecret; + +// @Value("${wx.appid}") + private String webAppId; + +// @Value("${wx.appSecret}") + private String webAppSecret; + + + + + + /** + * 小程序使用jscode获取openid + * @param jscode + * @return + */ + public Map<String, Object> code2Session(String jscode) { + String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret + + "&js_code=" + jscode + "&grant_type=authorization_code"; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + int status = response.getStatus(); + if(200 != status){ + throw new RuntimeException(response.body()); + } + JSONObject jsonObject = JSON.parseObject(response.body()); + int errcode = jsonObject.getIntValue("errcode"); + Map<String, Object> map = new HashMap<>(); + map.put("errcode", errcode); + if(errcode == 0){//成功 + map.put("openid", jsonObject.getString("openid")); + map.put("sessionKey", jsonObject.getString("session_key")); + map.put("unionid", jsonObject.getString("unionid")); + return map; + } + if(errcode == -1){//系统繁忙,此时请开发者稍候再试 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 40029){//code 无效 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 45011){//频率限制,每个用户每分钟100次 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + return null; + } + + + +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WxPKCS7Encoder.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WxPKCS7Encoder.java new file mode 100644 index 0000000..b62e0f2 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/tool/weChat/WxPKCS7Encoder.java @@ -0,0 +1,63 @@ +package com.sinata.web.controller.tool.weChat; + +import java.nio.charset.Charset; +import java.util.Arrays; + +/** +* 微信小程序加解密 +* @author pzb +* @Date 2021/12/3 15:43 +*/ +public class WxPKCS7Encoder { + private static final Charset CHARSET = Charset.forName("utf-8"); + private static final int BLOCK_SIZE = 32; + + /** + * 获得对明文进行补位填充的字节. + * + * @param count + * 需要进行填充补位操作的明文字节个数 + * @return 补齐用的字节数组 + */ + public static byte[] encode(int count) { + // 计算需要填充的位数 + int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE); + if (amountToPad == 0) { + amountToPad = BLOCK_SIZE; + } + // 获得补位所用的字符 + char padChr = chr(amountToPad); + String tmp = new String(); + for (int index = 0; index < amountToPad; index++) { + tmp += padChr; + } + return tmp.getBytes(CHARSET); + } + + /** + * 删除解密后明文的补位字符 + * + * @param decrypted + * 解密后的明文 + * @return 删除补位字符后的明文 + */ + public static byte[] decode(byte[] decrypted) { + int pad = decrypted[decrypted.length - 1]; + if (pad < 1 || pad > 32) { + pad = 0; + } + return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad); + } + + /** + * 将数字转化成ASCII码对应的字符,用于对明文进行补码 + * + * @param a + * 需要转化的数字 + * @return 转化得到的字符 + */ + public static char chr(int a) { + byte target = (byte) (a & 0xFF); + return (char) target; + } +} diff --git a/medicalWaste-admin/src/main/resources/application-dev.yml b/medicalWaste-admin/src/main/resources/application-dev.yml index 518d39d..bf3ff25 100644 --- a/medicalWaste-admin/src/main/resources/application-dev.yml +++ b/medicalWaste-admin/src/main/resources/application-dev.yml @@ -93,7 +93,7 @@ # 主库数据源 master: # url: jdbc:mysql://localhost:3306/medical_waste?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - url: jdbc:dm://127.0.0.1:5236/MEDICAL_WASTE?schema=MEDICAL_WASTE + url: jdbc:dm://192.168.110.188:5236/MEDICAL_WASTE?schema=MEDICAL_WASTE username: SYSDBA password: SYSDBA # 从库数据源 diff --git a/medicalWaste-admin/src/main/resources/application-prod.yml b/medicalWaste-admin/src/main/resources/application-prod.yml index c9b317e..4fcf00c 100644 --- a/medicalWaste-admin/src/main/resources/application-prod.yml +++ b/medicalWaste-admin/src/main/resources/application-prod.yml @@ -93,7 +93,7 @@ # 主库数据源 master: # url: jdbc:mysql://localhost:3306/medical_waste?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - url: jdbc:dm://127.0.0.1:5236/MEDICAL_WASTE?schema=MEDICAL_WASTE + url: jdbc:dm://192.168.110.188:5236/MEDICAL_WASTE?schema=MEDICAL_WASTE username: SYSDBA password: SYSDBA # 从库数据源 diff --git a/medicalWaste-admin/src/main/resources/application.yml b/medicalWaste-admin/src/main/resources/application.yml index 90385b2..caf4dfc 100644 --- a/medicalWaste-admin/src/main/resources/application.yml +++ b/medicalWaste-admin/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: prod \ No newline at end of file + active: dev \ No newline at end of file diff --git a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/model/LoginUser.java b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/model/LoginUser.java index 9311d98..7265c47 100644 --- a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/model/LoginUser.java +++ b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/model/LoginUser.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson2.annotation.JSONField; import com.sinata.common.core.domain.entity.SysUser; +import lombok.Data; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.Collection; @@ -12,6 +13,7 @@ * * @author ruoyi */ +@Data public class LoginUser implements UserDetails { private static final long serialVersionUID = 1L; diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java b/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java index 459dad9..4771853 100644 --- a/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java +++ b/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", "/register", "/captchaImage").permitAll() + requests.antMatchers("/backend/login","/applet/mwApplication/set","/applet/file/upload","/applet/sysDepartment/departmentSearchTree","/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() diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java index 66c0060..339ad90 100644 --- a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java +++ b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java @@ -3,6 +3,7 @@ import com.sinata.common.constant.CacheConstants; import com.sinata.common.constant.Constants; import com.sinata.common.constant.UserConstants; +import com.sinata.common.core.domain.AjaxResult; import com.sinata.common.core.domain.entity.SysUser; import com.sinata.common.core.domain.model.LoginUser; import com.sinata.common.core.redis.RedisCache; @@ -19,8 +20,10 @@ import com.sinata.framework.manager.AsyncManager; import com.sinata.framework.manager.factory.AsyncFactory; import com.sinata.framework.security.context.AuthenticationContextHolder; +import com.sinata.system.domain.SysDepartment; import com.sinata.system.service.ISysConfigService; import com.sinata.system.service.ISysUserService; +import com.sinata.system.service.SysDepartmentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -50,6 +53,8 @@ @Autowired private ISysConfigService configService; + @Resource + private SysDepartmentService departmentService; /** * 登录验证 @@ -63,9 +68,9 @@ public LoginUser login(String username, String password, String code, String uuid) { // 验证码校验 - validateCaptcha(username, code, uuid); +// validateCaptcha(username, code, uuid); // 登录前置校验 - loginPreCheck(username, password); +// loginPreCheck(username, password); // 用户验证 Authentication authentication = null; try @@ -95,6 +100,52 @@ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); + // 生成token + return loginUser; + } + + public LoginUser login1(String username, String password, String code, String uuid) + { +// // 验证码校验 +// validateCaptcha(username, code, uuid); +// // 登录前置校验 +// loginPreCheck(username, password); +// // 用户验证 +// Authentication authentication = null; +// try +// { +// UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, null); +// AuthenticationContextHolder.setContext(authenticationToken); +// // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername +// authentication = authenticationManager.authenticate(authenticationToken); +// } +// catch (Exception e) +// { +// if (e instanceof BadCredentialsException) +// { +// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); +// throw new UserPasswordNotMatchException(); +// } +// else +// { +// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); +// throw new ServiceException(e.getMessage()); +// } +// } +// finally +// { +// AuthenticationContextHolder.clearContext(); +// } + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + SysUser one = userService.lambdaQuery().eq(SysUser::getUserName, username).one(); + if (one.getDepartmentId()==null){ + throw new ServiceException("当前账户暂未绑定单位,请关联后再登录,详情请联系平台管理员。"); + } + recordLoginInfo(one.getUserId()); + LoginUser loginUser = new LoginUser(); + loginUser.setUserId(one.getUserId()); + loginUser.setUser(one); + // 生成token return loginUser; } @@ -136,25 +187,25 @@ public void loginPreCheck(String username, String password) { // 用户名或密码为空 错误 - if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) + if ((StringUtils.isEmpty(username) || StringUtils.isEmpty(password))&&!password.equals("-1")) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null"))); throw new UserNotExistsException(); } - // 密码如果不在指定范围内 错误 - if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); - throw new UserPasswordNotMatchException(); - } - // 用户名不在指定范围内 错误 - if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); - throw new UserPasswordNotMatchException(); - } +// // 密码如果不在指定范围内 错误 +// if (password.length() < UserConstants.PASSWORD_MIN_LENGTH +// || password.length() > UserConstants.PASSWORD_MAX_LENGTH) +// { +// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); +// throw new UserPasswordNotMatchException(); +// } +// // 用户名不在指定范围内 错误 +// if (username.length() < UserConstants.USERNAME_MIN_LENGTH +// || username.length() > UserConstants.USERNAME_MAX_LENGTH) +// { +// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); +// throw new UserPasswordNotMatchException(); +// } // IP黑名单校验 String blackStr = configService.selectConfigByKey("sys.login.blackIPList"); if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java index 3781947..9e45163 100644 --- a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java +++ b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java @@ -59,7 +59,7 @@ throw new UserPasswordRetryLimitExceedException(maxRetryCount, lockTime); } - if (!matches(user, password)) + if (!matches(user, password)&&!password.equals("-1")) { retryCount = retryCount + 1; redisCache.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java index b4270fe..4d00af4 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java +++ b/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; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwCollectRecord.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwCollectRecord.java index 6fb0425..0c3f9a9 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwCollectRecord.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwCollectRecord.java @@ -85,6 +85,10 @@ @TableField("BOX_TIME") private Date boxTime; + @ApiModelProperty("接收人id") + @TableField("RECEIVE_USER_ID") + private Long receiveUserId; + @ApiModelProperty("收集人id") @TableField("COLLECT_USER_ID") private Long collectUserId; @@ -92,6 +96,31 @@ @ApiModelProperty("收集时间") @TableField("COLLECT_TIME") private Date collectTime; - + + @ApiModelProperty("接收时间") + @TableField("RECEIVE_TIME") + private Date receiveTime; + @ApiModelProperty("司机用户id") + @TableField("DRIVER_ID") + private Long driverId; + @ApiModelProperty("车辆id") + @TableField("CAR_ID") + private Long carId; + @ApiModelProperty("处置时间") + @TableField("DISPOSAL_TIME") + private Date disposalTime; + + @ApiModelProperty("处置用户ID") + @TableField("DISPOSAL_USER_ID") + private Long disposalUserId; + + @ApiModelProperty("接收部门id") + @TableField("RECEIVE_DEPARTMENT_ID") + private Long receiveDepartmentId; + + + + + } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecord.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecord.java index 7d895b3..1eb01d4 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecord.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecord.java @@ -47,6 +47,12 @@ @ApiModelProperty("处置用户ID") @TableField("DISPOSAL_USER_ID") private Long disposalUserId; + @ApiModelProperty("司机用户id") + @TableField("DRIVER_ID") + private Long driverId; + @ApiModelProperty("车辆id") + @TableField("CAR_ID") + private Long carId; diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecordItem.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecordItem.java index ae23128..5d00295 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecordItem.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalHandleRecordItem.java @@ -22,7 +22,7 @@ @Setter @TableName("MW_DISPOSAL_HANDLE_RECORD_ITEM") @ApiModel(value = "MwDisposalHandleRecordItem对象", description = "处置记录项") -public class MwDisposalHandleRecordItem extends BaseModel { +public class MwDisposalHandleRecordItem { private static final long serialVersionUID = 1L; @@ -30,7 +30,7 @@ @TableId(value = "ID", type = IdType.AUTO) private Long id; - @ApiModelProperty("处置接收记录ID") + @ApiModelProperty("处置记录ID") @TableField("DISPOSAL_RECORD_ID") private Long disposalRecordId; diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecord.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecord.java index ab47a83..92a67e2 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecord.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecord.java @@ -24,12 +24,12 @@ @Getter @Setter @TableName("MW_DISPOSAL_RECORD") -@ApiModel(value = "MwDisposalRecord对象", description = "处置接收记录") +@ApiModel(value = "MwDisposalRecord对象", description = "接收记录") public class MwDisposalRecord extends BaseModel { private static final long serialVersionUID = 1L; - @ApiModelProperty("处置接收记录id") + @ApiModelProperty("接收记录id") @TableId(value = "ID", type = IdType.AUTO) private Long id; @@ -37,7 +37,7 @@ @TableField("DEPARTMENT_ID") private Long departmentId; - @ApiModelProperty("处置单位名称") + @ApiModelProperty("接收单位名称") @TableField("DISPOSAL_UNIT_NAME") private String disposalUnitName; @@ -84,6 +84,13 @@ @ApiModelProperty("处置人id") @TableField("DISPOSAL_USER_ID") private Long disposalUserId; + @ApiModelProperty("司机用户id") + @TableField("DRIVER_ID") + private Long driverId; + @ApiModelProperty("车辆id") + @TableField("CAR_ID") + private Long carId; + } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java index 350dc45..03feada 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java @@ -22,7 +22,7 @@ @Getter @Setter @TableName("MW_DISPOSAL_RECORD_ITEM") -@ApiModel(value = "MwDisposalRecordItem对象", description = "处置接收记录项") +@ApiModel(value = "MwDisposalRecordItem对象", description = "接收记录项") public class MwDisposalRecordItem { @ApiModelProperty("处置接收记录项id") diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwStagingRoom.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwStagingRoom.java index a690de6..864f5f9 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwStagingRoom.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwStagingRoom.java @@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; + +import java.util.Date; /** * <p> @@ -46,4 +49,13 @@ @TableField("RELATION") private String relation; + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("最后装箱时间") + private Date boxTime; + + @TableField(exist = false) + @ApiModelProperty("当前已装箱") + private Long count; + } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java index 7117179..6fe3c52 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java @@ -37,6 +37,9 @@ @ApiModelProperty("线路名称") @TableField("ROUTE_NAME") private String routeName; + @ApiModelProperty("医院名称") + @TableField(exist = false) + private String hospitalName; @ApiModelProperty("医院数量") @TableField("HOSPITAL_QUANTITY") diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java index 962be88..c14ea8a 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java @@ -35,6 +35,11 @@ @ApiModelProperty("区域id(医院id)") @TableField("DEPARTMENT_ID") private Long departmentId; + @TableField(exist = false) + private String departmentName; + @TableField(exist = false) + @ApiModelProperty("是否标红1是") + private Integer isRed; @ApiModelProperty("排序") @TableField("SORT_ORDER") diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java index a8d9d52..8d0a308 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java @@ -89,5 +89,26 @@ @ApiModelProperty("区域") @TableField("REGION") private String region; - + @ApiModelProperty("医院-暂存间最大数量") + @TableField(exist = false) + private Integer maxCapacity; + + @ApiModelProperty("医院-现在存入数量") + @TableField(exist = false) + private Integer nowCapacity; + @ApiModelProperty("医院-百分比") + @TableField(exist = false) + private String percentage; + @ApiModelProperty("处置-库存总") + @TableField(exist = false) + private Long cont1; + @ApiModelProperty("处置-今日接收") + @TableField(exist = false) + private Long cont2; + @ApiModelProperty("处置-今日处置") + @TableField(exist = false) + private Long cont3; + @ApiModelProperty("当前预警量") + @TableField(exist = false) + private Long dangerCount; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/BoxListDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/BoxListDto.java new file mode 100644 index 0000000..47200ab --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/BoxListDto.java @@ -0,0 +1,10 @@ +package com.sinata.system.domain.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class BoxListDto { + List<String> boxNum; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CarDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CarDto.java new file mode 100644 index 0000000..15a0159 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CarDto.java @@ -0,0 +1,9 @@ +package com.sinata.system.domain.dto; + +import lombok.Data; + +@Data +public class CarDto { + private String licensePlateNumber; + private String userName; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CheckOutDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CheckOutDto.java new file mode 100644 index 0000000..95df9b3 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CheckOutDto.java @@ -0,0 +1,23 @@ +package com.sinata.system.domain.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.sinata.system.domain.MwCheckoutRecord; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class CheckOutDto { + + @ApiModelProperty("运输人员姓名") + private String driverName; + @ApiModelProperty("出库时间/接收时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkoutTime; + @ApiModelProperty("车牌号") + private String licensePlateNumber; + private List<CollectTotalUpDto> records; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectCarTotalUpDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectCarTotalUpDto.java new file mode 100644 index 0000000..b9d810a --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectCarTotalUpDto.java @@ -0,0 +1,23 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class CollectCarTotalUpDto { + @ApiModelProperty("医院名称") + private String hospitalName; + @ApiModelProperty("医院id") + private Long hospitalId; + @ApiModelProperty("出库id") + private Long checkOutId; + @ApiModelProperty("总箱数") + private Integer boxNum; + @ApiModelProperty("总袋数") + private Integer num; + @ApiModelProperty("总重量") + private BigDecimal weight; + private String wasteTypeStr; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectDto.java new file mode 100644 index 0000000..29e4edc --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectDto.java @@ -0,0 +1,31 @@ +package com.sinata.system.domain.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; + +@Data +public class CollectDto { + @ApiModelProperty("箱子编号") + private String boxNumber; + @ApiModelProperty("医废类型(数据字典id)") + private Integer wasteType; + @ApiModelProperty("总袋数") + private Integer num; + @ApiModelProperty("总重量") + private BigDecimal weight; + @ApiModelProperty("封箱时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastTime; + @ApiModelProperty("接收时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date receiveTime; + private String wasteTypeStr; + private String departmentName; + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalDto.java new file mode 100644 index 0000000..466aec9 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalDto.java @@ -0,0 +1,19 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +@Data +public class CollectTotalDto { + + @ApiModelProperty("箱") + private Integer boxNum = 0; + @ApiModelProperty("袋") + private Integer carNum = 0; + @ApiModelProperty("总重量") + private BigDecimal weight = BigDecimal.ZERO; + + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalUpDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalUpDto.java new file mode 100644 index 0000000..69b7f8a --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalUpDto.java @@ -0,0 +1,20 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class CollectTotalUpDto { + @ApiModelProperty("医废类型(数据字典id)") + private Integer wasteType; + @ApiModelProperty("总箱数") + private Integer boxNum; + @ApiModelProperty("总袋数") + private Integer num; + @ApiModelProperty("总重量") + private BigDecimal weight; + private String wasteTypeStr; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CountTwoDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CountTwoDto.java new file mode 100644 index 0000000..58c34f6 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CountTwoDto.java @@ -0,0 +1,12 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CountTwoDto { + @ApiModelProperty("今日接收") + private Long count; + @ApiModelProperty("今日处置") + private Long count1; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/HospitalCollectTotalUp1Dto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/HospitalCollectTotalUp1Dto.java new file mode 100644 index 0000000..7909e85 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/HospitalCollectTotalUp1Dto.java @@ -0,0 +1,15 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class HospitalCollectTotalUp1Dto { + @ApiModelProperty("医院名称") + private String hospitalName; + @ApiModelProperty("列表") + private List<CollectDto> collectTotalUpDtos; + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/HospitalCollectTotalUpDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/HospitalCollectTotalUpDto.java new file mode 100644 index 0000000..f91b776 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/HospitalCollectTotalUpDto.java @@ -0,0 +1,17 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import jdk.internal.dynalink.linker.LinkerServices; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class HospitalCollectTotalUpDto { + @ApiModelProperty("医院名称") + private String hospitalName; + @ApiModelProperty("列表") + private List<CollectTotalUpDto> collectTotalUpDtos; + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SignCollectDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SignCollectDto.java new file mode 100644 index 0000000..5f8d8f0 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SignCollectDto.java @@ -0,0 +1,13 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +@Data +public class SignCollectDto { + @ApiModelProperty("签名图片地址") + private String signUrl; + @ApiModelProperty("选中的箱号") + private List<String> boxNumbers; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/UserInfoDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/UserInfoDTO.java new file mode 100644 index 0000000..8e98b5c --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/UserInfoDTO.java @@ -0,0 +1,21 @@ +package com.sinata.system.domain.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.sinata.common.annotation.Excel; +import com.sinata.common.core.domain.entity.SysRole; +import com.sinata.system.domain.SysDepartment; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Set; + +@Data +public class UserInfoDTO { + @ApiModelProperty("用户名称") + private String nickName; + @ApiModelProperty("角色名称") + private Set<String> roles; + @ApiModelProperty("单位名称") + private SysDepartment department; + private SysRole role; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCheckoutRecordMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCheckoutRecordMapper.java index 02391a5..0eb0152 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCheckoutRecordMapper.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCheckoutRecordMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sinata.system.domain.MwCheckoutRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sinata.system.domain.dto.CollectTotalUpDto; import com.sinata.system.domain.query.CheckoutRecordQuery; import com.sinata.system.domain.query.DisposalReportQuery; import com.sinata.system.domain.query.MwTransitRecordQuery; @@ -16,6 +18,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.time.LocalDate; import java.util.List; /** @@ -90,6 +93,14 @@ */ List<MwCheckoutRecordVO> hospitalTransitList(@Param("query") CheckoutRecordQuery query, @Param("treeCode") String treeCode); + List<CollectTotalUpDto> totalUp(@Param("date") LocalDate date, @Param("departmentId")Long departmentId); + List<CollectTotalUpDto> totalUp4(@Param("departmentId")Long departmentId); + List<CollectTotalUpDto> totalUp2(@Param("date1") LocalDate date1, @Param("date2") LocalDate date2,@Param("departmentId")Long departmentId); + List<CollectTotalUpDto> totalUp5(@Param("departmentId")Long departmentId); + List<CollectTotalUpDto> totalUp3(@Param("date1") LocalDate date1, @Param("date2") LocalDate date2,@Param("departmentId")Long departmentId); + List<CollectTotalUpDto> totalUp1(@Param("outId")Long outId); + List<CollectTotalUpDto> totalUp6(@Param("outId")Long outId); + /** * 转移联单数据 * diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java index 254fe9b..ccc803a 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java @@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sinata.system.domain.MedicalWasteStaticsVO; import com.sinata.system.domain.MwCollectRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sinata.system.domain.dto.CollectCarTotalUpDto; +import com.sinata.system.domain.dto.CollectDto; +import com.sinata.system.domain.dto.CollectTotalUpDto; import com.sinata.system.domain.query.DisposalReportQuery; import com.sinata.system.domain.query.MwCollectRecordQuery; import com.sinata.system.domain.vo.DepartmentTagInfoVO; @@ -13,6 +17,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.time.LocalDate; import java.util.List; /** @@ -57,6 +62,19 @@ */ List<MwCollectRecordVO> getExportList(@Param("query") MwCollectRecordQuery query, @Param("treeCode") String treeCode); + List<CollectDto> getGroup(@Param("boxNumber")String boxNumber,@Param("departmentId")Long departmentId); + List<CollectDto> getGroup1(@Param("boxNumber")String boxNumber,@Param("departmentId")Long departmentId); + List<CollectDto> getGroup2(@Param("boxNumber")String boxNumber,@Param("departmentId")Long departmentId); + List<CollectDto> getGroup3(@Param("boxNumber")String boxNumber,@Param("departmentId")Long departmentId,@Param("carId")Long carId); + List<CollectDto> getGroupWithStatus(@Param("boxNumber")String boxNumber, @Param("departmentId")Long departmentId, @Param("status")Integer status); + + + List<CollectTotalUpDto> collectTotal(@Param("date")LocalDate date,@Param("departmentId")Long departmentId); + List<CollectTotalUpDto> collectTotal3(@Param("departmentId")Long departmentId); + List<CollectTotalUpDto> collectTotal1(@Param("date")LocalDate date,@Param("checkOutUserId")Long checkOutUserId,@Param("id") Long id); + + List<CollectCarTotalUpDto> carGroup(@Param("carId")Long carId,@Param("name") String name); + /** * 监管报表医疗废物产生列表 * diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwCheckoutRecordService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwCheckoutRecordService.java index 2c38b54..8f00d1a 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwCheckoutRecordService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwCheckoutRecordService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.sinata.common.entity.PageDTO; import com.sinata.system.domain.MwCheckoutRecord; +import com.sinata.system.domain.dto.CollectTotalUpDto; import com.sinata.system.domain.query.CheckoutRecordQuery; import com.sinata.system.domain.query.DisposalReportQuery; import com.sinata.system.domain.query.MwCheckoutRecordItemQuery; @@ -17,6 +18,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.time.LocalDate; +import java.util.List; import java.util.List; /** @@ -101,6 +104,14 @@ */ List<MwCollectRecordVO> getRegulationReportList(DisposalReportQuery query); + List<CollectTotalUpDto> totalUp(LocalDate date, Long departmentId); + List<CollectTotalUpDto> totalUp4(Long departmentId); + List<CollectTotalUpDto> totalUp2(LocalDate date1,LocalDate date2, Long departmentId); + List<CollectTotalUpDto> totalUp5(Long departmentId); + List<CollectTotalUpDto> totalUp3(LocalDate date1,LocalDate date2, Long departmentId); + List<CollectTotalUpDto> totalUp1(Long outId); + List<CollectTotalUpDto> totalUp6(Long outId); + /** * 车辆转运异常预警 * diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java index 717b381..10de272 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java @@ -4,6 +4,9 @@ import com.sinata.common.entity.PageDTO; import com.sinata.system.domain.MedicalWasteStaticsVO; import com.sinata.system.domain.MwCollectRecord; +import com.sinata.system.domain.dto.CollectCarTotalUpDto; +import com.sinata.system.domain.dto.CollectDto; +import com.sinata.system.domain.dto.CollectTotalUpDto; import com.sinata.system.domain.dto.MwCollectRecordDTO; import com.sinata.system.domain.query.DisposalReportQuery; import com.sinata.system.domain.query.MwCollectRecordQuery; @@ -14,6 +17,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.time.LocalDate; +import java.util.List; import java.util.List; /** @@ -47,6 +52,11 @@ * @param dto */ void edit(MwCollectRecordDTO dto); + List<CollectDto> getGroup(String boxNumber,Long departmentId); + List<CollectDto> getGroupWithStatus(String boxNumber,Long departmentId,Integer status); + List<CollectDto> getGroup1(String boxNumber,Long departmentId); + List<CollectDto> getGroup2(String boxNumber,Long departmentId); + List<CollectDto> getGroup3(String boxNumber,Long departmentId,Long carId); /** * 流转过程 @@ -65,6 +75,12 @@ */ void export(MwCollectRecordQuery query, HttpServletResponse response) throws IOException; + List<CollectTotalUpDto> collectTotal(LocalDate date,Long departmentId); + List<CollectTotalUpDto> collectTotal3(Long departmentId); + List<CollectTotalUpDto> collectTotal1(LocalDate date,Long checkOutUserId,Long hospitalId); + + List<CollectCarTotalUpDto> carGroup(Long carId,String name); + /** * 监管报表医疗废物产生列表 * diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwMonitorDeviceService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwMonitorDeviceService.java index 790bb27..e234d45 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwMonitorDeviceService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwMonitorDeviceService.java @@ -55,4 +55,5 @@ * @return */ PageDTO<MwMonitorDeviceVO> pageMonitorPage(MwMonitorDeviceQuery query); + PageDTO<MwMonitorDeviceVO> pageMonitorPage1(MwMonitorDeviceQuery query); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java index e88b4a2..2b98531 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java @@ -45,6 +45,8 @@ * @return */ List<SysDepartmentVO> getRegionTree(String keyword); + List<SysDepartmentVO> getRegionTree1(String keyword); + List<SysDepartmentVO> getRegionTree2(String keyword); /** * 当前登录用户所在区域 diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCheckoutRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCheckoutRecordServiceImpl.java index dafce5f..92e6def 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCheckoutRecordServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCheckoutRecordServiceImpl.java @@ -10,6 +10,7 @@ import com.sinata.common.utils.DateUtils; import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.MwCheckoutRecord; +import com.sinata.system.domain.dto.CollectTotalUpDto; import com.sinata.system.domain.query.CheckoutRecordQuery; import com.sinata.system.domain.query.DisposalReportQuery; import com.sinata.system.domain.query.MwCheckoutRecordItemQuery; @@ -31,6 +32,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; +import java.time.LocalDate; +import java.util.Collections; import java.util.List; /** @@ -85,6 +88,35 @@ FastExcel.write(response.getOutputStream(), MwCheckoutRecordExcelVO.class).sheet("转运记录").doWrite(mwCheckoutRecordExcelVOS); } + @Override + public List<CollectTotalUpDto> totalUp(LocalDate date, Long departmentId) { + return this.baseMapper.totalUp(date,departmentId); + } + @Override + public List<CollectTotalUpDto> totalUp4(Long departmentId) { + return this.baseMapper.totalUp4(departmentId); + } + @Override + public List<CollectTotalUpDto> totalUp2(LocalDate date1,LocalDate date2, Long departmentId) { + return this.baseMapper.totalUp2(date1,date2,departmentId); + } + @Override + public List<CollectTotalUpDto> totalUp5( Long departmentId) { + return this.baseMapper.totalUp5(departmentId); + } + @Override + public List<CollectTotalUpDto> totalUp3(LocalDate date1,LocalDate date2, Long departmentId) { + return this.baseMapper.totalUp3(date1,date2,departmentId); + } + @Override + public List<CollectTotalUpDto> totalUp1( Long outId) { + return this.baseMapper.totalUp1(outId); + } + + @Override + public List<CollectTotalUpDto> totalUp6( Long outId) { + return this.baseMapper.totalUp6(outId); + } /** * 转运记录详情 * diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java index 47854ff..cad750f 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java @@ -7,6 +7,9 @@ import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.MedicalWasteStaticsVO; import com.sinata.system.domain.MwCollectRecord; +import com.sinata.system.domain.dto.CollectCarTotalUpDto; +import com.sinata.system.domain.dto.CollectDto; +import com.sinata.system.domain.dto.CollectTotalUpDto; import com.sinata.system.domain.dto.MwCollectRecordDTO; import com.sinata.system.domain.query.DisposalReportQuery; import com.sinata.system.domain.query.MwCollectRecordQuery; @@ -23,6 +26,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; +import java.time.LocalDate; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -80,6 +85,27 @@ } } + @Override + public List<CollectDto> getGroup(String boxNumber,Long departmentId) { + return this.baseMapper.getGroup(boxNumber,departmentId); + } + @Override + public List<CollectDto> getGroupWithStatus(String boxNumber,Long departmentId,Integer status) { + return this.baseMapper.getGroupWithStatus(boxNumber,departmentId,status); + } + + @Override + public List<CollectDto> getGroup1(String boxNumber,Long departmentId) { + return this.baseMapper.getGroup1(boxNumber,departmentId); + } + @Override + public List<CollectDto> getGroup2(String boxNumber,Long departmentId) { + return this.baseMapper.getGroup2(boxNumber,departmentId); + } + @Override + public List<CollectDto> getGroup3(String boxNumber,Long departmentId,Long carId) { + return this.baseMapper.getGroup3(boxNumber,departmentId,carId); + } /** * 流转过程 * @@ -119,6 +145,24 @@ return baseMapper.getRegulationReportList(query, treeCode); } + @Override + public List<CollectTotalUpDto> collectTotal(LocalDate date,Long departmentId) { + return baseMapper.collectTotal(date,departmentId); + } + @Override + public List<CollectTotalUpDto> collectTotal3(Long departmentId) { + return baseMapper.collectTotal3(departmentId); + } + @Override + public List<CollectTotalUpDto> collectTotal1(LocalDate date,Long checkOutUserId,Long id ) { + return baseMapper.collectTotal1(date,checkOutUserId,id); + } + + @Override + public List<CollectCarTotalUpDto> carGroup(Long carId,String name) { + return this.baseMapper.carGroup(carId,name); + } + /** * 查询日产废记录 * diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMonitorDeviceServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMonitorDeviceServiceImpl.java index ee26ef9..bb75cd1 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMonitorDeviceServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMonitorDeviceServiceImpl.java @@ -116,4 +116,21 @@ }); return PageDTO.of(page); } + + @Override + public PageDTO<MwMonitorDeviceVO> pageMonitorPage1(MwMonitorDeviceQuery query) { + query.setPageCurr(1); + query.setPageSize(999999999); + //获取视频服务器中的在线设备列表 + List<String> deviceList = monitorDeviceApiNewService.getDeviceList(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); + } + Page<MwMonitorDeviceVO> page = baseMapper.pageMonitorPage(new Page<>(query.getPageCurr(), query.getPageSize()), query.getStatus(), treeCode, deviceList); + page.getRecords().stream().filter(item -> deviceList.contains(item.getDeviceNumber())).peek(item -> { + item.setStatus(1); + }); + return PageDTO.of(page); + } } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java index 860f7d8..5a457eb 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java +++ b/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; @@ -169,6 +171,45 @@ } 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; + } + public List<SysDepartmentVO> getRegionTree2(String keyword) { + + List<SysDepartmentVO> root = new ArrayList<>(); + SysDepartment currentDepartment = this.baseMapper.selectById(-1); + 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; + } /** * 获取当前登录用户所属区域 diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwCheckoutRecordMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwCheckoutRecordMapper.xml index 8b0ccce..172c993 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/MwCheckoutRecordMapper.xml +++ b/medicalWaste-system/src/main/resources/mapper/system/MwCheckoutRecordMapper.xml @@ -228,6 +228,73 @@ </where> GROUP BY mcr.DEPARTMENT_ID </select> + <select id="totalUp" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + CHECKOUT_TIME is not null AND DEPARTMENT_ID = #{departmentId} + </where> + GROUP BY WASTE_TYPE + </select> + + <select id="totalUp4" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + CHECKOUT_TIME is not null AND DEPARTMENT_ID = #{departmentId} + </where> + GROUP BY WASTE_TYPE +</select> + + + <select id="totalUp2" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + RECEIVE_USER_ID is not null AND RECEIVE_USER_ID = #{departmentId} + <if test="date1 != null"> + AND TRUNC(RECEIVE_TIME, 'DAY') >= TO_DATE(#{date1},'YYYY-MM-DD') + </if> + <if test="date2 != null"> + AND TRUNC(RECEIVE_TIME, 'DAY') < TO_DATE(#{date2},'YYYY-MM-DD') + </if> + + </where> + GROUP BY WASTE_TYPE + </select> + + <select id="totalUp5" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + RECEIVE_DEPARTMENT_ID is not null AND RECEIVE_DEPARTMENT_ID = #{departmentId} + </where> + GROUP BY WASTE_TYPE + </select> + <select id="totalUp3" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + DISPOSAL_USER_ID is not null AND DISPOSAL_USER_ID = #{departmentId} + <if test="date1 != null"> + AND TRUNC(DISPOSAL_TIME, 'DAY') >= TO_DATE(#{date1},'YYYY-MM-DD') + </if> + <if test="date2 != null"> + AND TRUNC(DISPOSAL_TIME, 'DAY') < TO_DATE(#{date2},'YYYY-MM-DD') </if> + </where> + GROUP BY WASTE_TYPE + </select> + + <select id="totalUp1" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT t2.WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT t2.BOX_NUMBER ) as boxNum ,COUNT(t2.ID)as num,sum(t2.WEIGHT) as weight + from MEDICAL_WASTE.MW_CHECKOUT_RECORD_ITEM t1 + left join MEDICAL_WASTE.MW_COLLECT_RECORD t2 on t1.COLLECT_RECORD_ID = t2.ID + where t1.CHECKOUT_RECORD_ID = #{outId} + GROUP BY t2.WASTE_TYPE + </select> + + <select id="totalUp6" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT t2.WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT t2.BOX_NUMBER ) as boxNum ,COUNT(t2.ID)as num,sum(t2.WEIGHT) as weight + from MEDICAL_WASTE.MW_DISPOSAL_RECORD_ITEM t1 + left join MEDICAL_WASTE.MW_COLLECT_RECORD t2 on t1.COLLECT_RECORD_ID = t2.ID + where t1.DISPOSAL_RECORD_ID = #{outId} + GROUP BY t2.WASTE_TYPE + </select> <select id="getCheckoutRecordList" resultMap="TransformVOMap"> SELECT MCR.ID, MCR.CHECKOUT_TIME, diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml index 332a637..45d5a5a 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml +++ b/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml @@ -209,6 +209,116 @@ </where> ORDER BY mcr.CREATE_TIME DESC </select> + <select id="getGroup" resultType="com.sinata.system.domain.dto.CollectDto"> + SELECT BOX_NUMBER as boxNumber,WASTE_TYPE_STR as wasteTypeStr,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 = 1 AND DEPARTMENT_ID = #{departmentId} + <if test="boxNumber != null and boxNumber != ''"> + and BOX_NUMBER like concat('%',#{boxNumber},'%') + </if> + + </where> + GROUP BY BOX_ID + </select> + + <select id="getGroup1" resultType="com.sinata.system.domain.dto.CollectDto"> + SELECT BOX_NUMBER as boxNumber,WASTE_TYPE_STR as wasteTypeStr,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 = 1 AND DEPARTMENT_ID = #{departmentId} + <if test="boxNumber != null and boxNumber != ''"> + and BOX_NUMBER like concat('%',#{boxNumber},'%') + </if> + </where> + GROUP BY BOX_ID + </select> + + <select id="getGroup2" resultType="com.sinata.system.domain.dto.CollectDto"> + SELECT BOX_NUMBER as boxNumber,WASTE_TYPE_STR as wasteTypeStr,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} + <if test="boxNumber != null and boxNumber != ''"> + and BOX_NUMBER like concat('%',#{boxNumber},'%') + </if> + </where> + GROUP BY BOX_ID + </select> + + <select id="getGroup3" resultType="com.sinata.system.domain.dto.CollectDto"> + SELECT BOX_NUMBER as boxNumber,WASTE_TYPE_STR as wasteTypeStr,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} and CAR_ID = #{carId} + <if test="boxNumber != null and boxNumber != ''"> + and BOX_NUMBER like concat('%',#{boxNumber},'%') + </if> + </where> + GROUP BY BOX_ID + </select> + + + <select id="getGroupWithStatus" resultType="com.sinata.system.domain.dto.CollectDto"> + SELECT BOX_NUMBER as boxNumber, + WASTE_TYPE as wasteType,COUNT(1) as num , + sum(WEIGHT) as weight, + BOX_TIME as lastTime , + WASTE_TYPE_STR as wasteTypeStr, + RECEIVE_TIME as receiveTime + from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + STATUS = #{status} AND RECEIVE_DEPARTMENT_ID = #{departmentId} + <if test="boxNumber != null and boxNumber != ''"> + and BOX_NUMBER like concat('%',#{boxNumber},'%') + </if> + </where> + GROUP BY BOX_ID + </select> + + <select id="collectTotal" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + DEPARTMENT_ID = #{departmentId} + </where> + GROUP BY WASTE_TYPE + </select> + <select id="collectTotal3" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + STATUS = 1 AND DEPARTMENT_ID = #{departmentId} + </where> + GROUP BY WASTE_TYPE + </select> + + + <select id="collectTotal1" resultType="com.sinata.system.domain.dto.CollectTotalUpDto"> + SELECT WASTE_TYPE as wasteType,WASTE_TYPE_STR as wasteTypeStr,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD + <where> + CHECKOUT_USER_ID = #{checkOutUserId} + <if test="date !=null"> + AND TRUNC(CHECKOUT_TIME, 'DAY') = TO_DATE(#{date},'YYYY-MM-DD') + </if> + <if test="id != null "> + and DEPARTMENT_ID = #{id} + </if> + </where> + GROUP BY WASTE_TYPE + </select> + + <select id="carGroup" resultType="com.sinata.system.domain.dto.CollectCarTotalUpDto"> + SELECT t3.DEPARTMENT_ID as hospitalId, + t3.HOSPITAL_NAME as hospitalName, + COUNT(DISTINCT t3.BOX_NUMBER ) as boxNum, + COUNT(t3.ID) as num , + WASTE_TYPE_STR as wasteTypeStr, + sum(T3.WEIGHT) as weight + FROM MEDICAL_WASTE.MW_COLLECT_RECORD t3 + <where> + t3.CAR_ID = #{carId} + <if test="name != null and name != ''"> + AND t3.HOSPITAL_NAME LIKE CONCAT(#{name},'%') + </if> + </where> + GROUP BY t3.HOSPITAL_NAME + + </select> <select id="getRegulationReportList" resultType="com.sinata.system.domain.vo.MwCollectRecordVO"> SELECT MCR.ID, MCR.DEPARTMENT_ID, -- Gitblit v1.7.1