medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java
@@ -1,40 +1,74 @@ package com.sinata.web.controller.applet; import java.util.Date; import java.math.BigDecimal; import java.util.*; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson2.JSONArray; 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.DateUtils; import com.sinata.common.utils.SecurityUtils; import com.sinata.common.utils.StringUtils; 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 com.sinata.system.domain.MwBox; import com.sinata.system.domain.MwCheckoutRecord; import com.sinata.system.domain.MwCheckoutRecordItem; import com.sinata.system.domain.MwCollectRecord; import com.sinata.system.domain.MwDisposalHandleRecord; import com.sinata.system.domain.MwDisposalHandleRecordItem; import com.sinata.system.domain.MwDisposalRecord; import com.sinata.system.domain.MwDisposalRecordItem; import com.sinata.system.domain.MwStagingRoom; import com.sinata.system.domain.MwTransitCar; import com.sinata.system.domain.MwTransitCarCollectPoint; import com.sinata.system.domain.MwTransitRoute; import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.dto.BoxListDto; import com.sinata.system.domain.dto.CarDto; import com.sinata.system.domain.dto.CollectCarTotalUpDto; import com.sinata.system.domain.dto.CollectDto; import com.sinata.system.domain.dto.CollectTotalDto; import com.sinata.system.domain.dto.CollectTotalUpDto; import com.sinata.system.domain.dto.HospitalCollectTotalUp1Dto; import com.sinata.system.domain.dto.HospitalCollectTotalUpDto; import com.sinata.system.domain.dto.SignCollectDto; import com.sinata.system.service.ISysDictDataService; import com.sinata.system.service.ISysUserService; import com.sinata.system.service.MwBoxService; import com.sinata.system.service.MwCheckoutRecordItemService; import com.sinata.system.service.MwCheckoutRecordService; import com.sinata.system.service.MwCollectRecordService; import com.sinata.system.service.MwDisposalHandleRecordItemService; import com.sinata.system.service.MwDisposalHandleRecordService; import com.sinata.system.service.MwDisposalRecordItemService; import com.sinata.system.service.MwDisposalRecordService; import com.sinata.system.service.MwStagingRoomService; import com.sinata.system.service.MwTransitCarCollectPointService; import com.sinata.system.service.MwTransitCarService; import com.sinata.system.service.MwTransitRouteService; import com.sinata.system.service.SysDepartmentService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Random; import java.util.Set; import java.util.stream.Collectors; import javax.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.transaction.annotation.Transactional; 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; import java.util.stream.Collectors; 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.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * <p> @@ -124,6 +158,7 @@ @ApiOperation(value = "装车",tags = "运输人员") @PostMapping("/box/collect") @Transactional(rollbackFor = Exception.class) public R<List<CollectDto>> collect(@RequestBody SignCollectDto signCollectDto) { SysUser sysUser1 = SecurityUtils.getLoginUser().getUser(); SysUser sysUser = userService.getById(sysUser1.getUserId()); @@ -287,8 +322,10 @@ @ApiOperation(value = "确认接受",tags = "处置人员") @PostMapping("/end/down/collect/confirm") @Transactional(rollbackFor = Exception.class) public R tanscollecttotal4(@RequestBody BoxListDto boxListDto) { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); Long userId = SecurityUtils.getUserId(); SysUser sysUser = userService.getById(userId); SysDepartment byId = departmentService.getById(sysUser.getDepartmentId()); //将record变为已接受 List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus,2).in(MwCollectRecord::getBoxNumber, boxListDto.getBoxNum()).list(); @@ -358,10 +395,13 @@ List<CollectDto> collectDtos = collectRecordService.getGroupWithStatus(boxNumber,byId.getDepartmentId(),3); return R.ok(collectDtos); } @Transactional(rollbackFor = Exception.class) @ApiOperation(value = "处置操作",tags = "处置人员") @PostMapping("/wait/out") public R<List<CollectDto>> list2(@RequestBody BoxListDto boxListDto) { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); Long userId = SecurityUtils.getUserId(); SysUser sysUser = userService.getById(userId); SysDepartment byId = departmentService.getById(sysUser.getDepartmentId()); List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus, 3).in(MwCollectRecord::getBoxNumber, boxListDto.getBoxNum()).list(); if (list.isEmpty()){ @@ -451,7 +491,8 @@ @ApiOperation("库存信息") @PostMapping("/list") public R<List<CollectDto>> list(String boxNumber) { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); Long userId = SecurityUtils.getUserId(); SysUser sysUser = userService.getById(userId); List<CollectDto> collectDtos = collectRecordService.getGroup(boxNumber,sysUser.getDepartmentId()); return R.ok(collectDtos); } medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentController.java
@@ -11,6 +11,8 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.util.List; import javax.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; @@ -20,9 +22,6 @@ 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; import java.util.List; /** * <p> @@ -109,8 +108,9 @@ * @return */ @ApiOperation("微型设备列表") @GetMapping("/list") public R<List<MwMicroEquipmentVO>> getList() { return R.ok(mwMicroEquipmentService.getList()); @GetMapping("/list/{departmentId}") public R<List<MwMicroEquipmentVO>> getList( @ApiParam(name = "departmentId", value = "医院id", required = true) @PathVariable("departmentId") Long departmentId) { return R.ok(mwMicroEquipmentService.getList(departmentId)); } } medicalWaste-admin/src/test/java/DepartmentTest.java
@@ -1,6 +1,8 @@ import com.sinata.RuoYiApplication; import com.sinata.system.mapper.SysDepartmentMapper; import com.sinata.system.service.ISysDictTypeService; import com.sinata.system.service.SysDepartmentService; import com.sinata.system.service.biz.TaskService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -16,6 +18,11 @@ private SysDepartmentMapper departmentMapper; @Resource private ISysDictTypeService sysDictTypeService; @Resource private TaskService taskService; @Resource private SysDepartmentService sysDepartmentService; @Test public void test(){ @@ -26,4 +33,14 @@ System.out.println(sysDictTypeService.list()); } @Test public void testTask() { taskService.checkoutOverTime(); } @Test public void test3() { System.out.println(sysDepartmentService.getRegionName(sysDepartmentService.getById(21))); } } medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalRecordMapper.java
@@ -85,4 +85,7 @@ * @return */ DepartmentTagInfoVO getTagInfo(Long id); DisposalRecordStaticsVO getDisposalData(@Param("query") MwDisposalRecordQuery query, @Param("treeCode") String treeCode); } medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentService.java
@@ -57,5 +57,5 @@ * * @return */ List<MwMicroEquipmentVO> getList(); List<MwMicroEquipmentVO> getList(Long departmentId); } medicalWaste-system/src/main/java/com/sinata/system/service/biz/TaskService.java
@@ -106,7 +106,8 @@ // 过滤出需要预警的记录 List<MwCollectRecord> recordList = collectRecordList.stream() .filter(item -> item.getWasteType().equals(configItem.getWasteType()) && DateUtils.timeDistanceHour(new Date(), item.getCollectTime()) > configItem.getValue()) DateUtils.timeDistanceHour(new Date(), item.getCollectTime()) >= configItem.getValue()) .collect(Collectors.toList()); if (CollUtils.isEmpty(recordList)) { medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalRecordServiceImpl.java
@@ -50,6 +50,10 @@ DisposalRecordStaticsVO vo = null; if (StringUtils.isNotBlank(treeCode)) { vo = baseMapper.getStaticsData(query, treeCode); DisposalRecordStaticsVO disposalRecordStaticsVO = baseMapper.getDisposalData(query, treeCode); vo.setTotalHandledQuantity(disposalRecordStaticsVO.getTotalHandledQuantity()); vo.setTotalHandledWeight(disposalRecordStaticsVO.getTotalHandledWeight()); } return vo; } medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java
@@ -89,6 +89,11 @@ public MwMicroEquipmentRecordVO detail(Long id) { MwMicroEquipmentRecordVO mwMicroEquipmentRecordVO = BeanUtils.copyBean(this.getById(id), MwMicroEquipmentRecordVO.class); if (Objects.nonNull(mwMicroEquipmentRecordVO)) { MwMicroEquipment equipment = mwMicroEquipmentService.getById( mwMicroEquipmentRecordVO.getEquipmentId()); if (Objects.nonNull(equipment)) { mwMicroEquipmentRecordVO.setEquipmentName(equipment.getEquipmentName()); } mwMicroEquipmentRecordVO.setMedicalWasteList(mwStagingRoomService.queryMedicalWasteList(mwMicroEquipmentRecordVO.getId())); } return mwMicroEquipmentRecordVO; medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentServiceImpl.java
@@ -6,7 +6,6 @@ import com.sinata.common.utils.BeanUtils; import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.MwMicroEquipment; import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.dto.MwMicroEquipmentDTO; import com.sinata.system.domain.query.MwMicroEquipmentQuery; import com.sinata.system.domain.query.StorageRecordQuery; @@ -16,11 +15,10 @@ import com.sinata.system.mapper.MwMicroEquipmentMapper; import com.sinata.system.service.MwMicroEquipmentService; import com.sinata.system.service.SysDepartmentService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; /** * <p> @@ -100,11 +98,11 @@ * @return */ @Override public List<MwMicroEquipmentVO> getList() { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); //TODO 待完善 public List<MwMicroEquipmentVO> getList(Long departmentId) { // SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); List<MwMicroEquipment> list = this.lambdaQuery() .eq(MwMicroEquipment::getStatus, MicroEquipmentStatusEnum.NORMAL.getCode()).list(); .eq(MwMicroEquipment::getStatus, MicroEquipmentStatusEnum.NORMAL.getCode()) .eq(MwMicroEquipment::getDepartmentId, departmentId).list(); return BeanUtils.copyList(list, MwMicroEquipmentVO.class); /*if (Objects.nonNull(myDepartment)) { if (myDepartment.getOrgType().equals(DepartmentEnum.MEDICAL_INSTITUTION.getCode())) { medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwTransitCarServiceImpl.java
@@ -99,6 +99,11 @@ if (Objects.isNull(dto.getId())) { throw new ServiceException("车辆id不能为空"); } Long count = lambdaQuery().eq(MwTransitCar::getLicensePlateNumber, dto.getLicensePlateNumber()).ne(MwTransitCar::getId, dto.getId()).count(); if (count > 0) { throw new ServiceException("车牌号已存在"); } MwTransitCar mwTransitCar = BeanUtils.copyBean(dto, MwTransitCar.class); updateById(mwTransitCar); } medicalWaste-system/src/main/resources/mapper/system/MwCheckoutRecordMapper.xml
@@ -67,7 +67,7 @@ AND mcr.CHECKOUT_TIME BETWEEN #{query.checkoutTimeStart} AND #{query.checkoutTimeEnd} </if> </where> GROUP BY mcr.DEPARTMENT_ID GROUP BY mcr.ID ORDER BY mcr.CHECKOUT_TIME DESC </select> <select id="hospitalDetail" resultType="com.sinata.system.domain.vo.MwCheckoutRecordVO"> @@ -91,27 +91,30 @@ </where> </select> <select id="hospitalDetailPage" resultType="com.sinata.system.domain.vo.MwMedicalWasteBoxVO"> SELECT mcr.BOX_ID AS id, mcr.BOX_NUMBER, mcr.WASTE_TYPE_STR, SELECT mcr2.BOX_ID AS id, mcr2.BOX_NUMBER, mcr2.WASTE_TYPE_STR, su.NICK_NAME AS COLLECT_USER_NAME, COUNT(*) AS bagNum, SUM(mcr.WEIGHT) AS totalWeight, mcr1.BAG_NUM AS bagNum, mcr1.TOTAL_WEIGHT, (SELECT MAX(mcr_inner.BOX_TIME) FROM MW_COLLECT_RECORD mcr_inner WHERE mcr_inner.BOX_ID = mcr.BOX_ID) AS BOX_TIME FROM MW_COLLECT_RECORD mcr LEFT JOIN SYS_USER su ON mcr.COLLECT_USER_ID = su.USER_ID WHERE mcr_inner.BOX_ID = mcr2.BOX_ID) AS BOX_TIME FROM MW_CHECKOUT_RECORD mcr1 LEFT JOIN MW_CHECKOUT_RECORD_ITEM mcri ON mcr1.ID = mcri.CHECKOUT_RECORD_ID LEFT JOIN MW_COLLECT_RECORD mcr2 ON mcri.COLLECT_RECORD_ID = mcr2.ID LEFT JOIN SYS_USER su ON mcr2.COLLECT_USER_ID = su.USER_ID LEFT JOIN SYS_DEPARTMENT sd ON su.DEPARTMENT_ID = sd.ID <where> mcr.STATUS = 2 AND mcr.DEL_FLAG = 0 mcr1.DEL_FLAG = 0 <if test="departmentId != null and departmentId != ''"> AND mcr.DEPARTMENT_ID = #{departmentId} AND mcr1.ID = #{departmentId} </if> </where> GROUP BY mcr.BOX_ID ORDER BY mcr.CREATE_TIME DESC GROUP BY mcr2.BOX_ID ORDER BY mcr2.CREATE_TIME DESC </select> <select id="transitPageList" resultType="com.sinata.system.domain.vo.MwTransitRecordVO"> SELECT @@ -157,11 +160,11 @@ <select id="transitDetail" resultType="com.sinata.system.domain.vo.MwTransitRecordVO"> SELECT MTRC.ROUTE_ID AS id, MDR.DISPOSAL_UNIT_NAME, MDR.DISPOSAL_UNIT_NAME AS departmentName, MTC.LICENSE_PLATE_NUMBER, SU.NICK_NAME, SUM(MCR.BOX_NUM) AS boxNum, SUM(MCR.TOTAL_WEIGHT) AS weight, SUM(MCR2.WEIGHT) AS weight, MIN(MCR2.BOX_TIME) AS startTime, MDR.RECEIVE_TIME AS endTime FROM MW_CHECKOUT_RECORD MCR medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml
@@ -35,12 +35,10 @@ ID, DEPARTMENT_ID, DISPOSAL_UNIT_NAME, RECEIVE_QUANTITY, RECEIVE_TIME, RECEIVE_WEIGHT, RECEIVER_ID, UNLOAD_QUANTITY, UNLOAD_WEIGHT, TOTAL_HANDLED_QUANTITY, DISPOSAL_FLAG, TOTAL_HANDLED_WEIGHT, DISPOSAL_TIME, DISPOSAL_USER_ID </sql> <select id="getStaticsData" resultType="com.sinata.system.domain.vo.DisposalRecordStaticsVO"> SELECT COALESCE(SUM(MDR.RECEIVE_QUANTITY),0) AS receivedQuantity, COALESCE(SUM(MDR.RECEIVE_WEIGHT),0) AS receivedWeight, SELECT COALESCE(SUM(MDR.RECEIVE_QUANTITY),0) AS receiveQuantity, COALESCE(SUM(MDR.RECEIVE_WEIGHT),0) AS receiveWeight, COALESCE(SUM(MDR.RECEIVE_QUANTITY),0) AS unloadQuantity, COALESCE(SUM(MDR.RECEIVE_WEIGHT),0) AS unloadWeight, COALESCE(SUM(MCR.WEIGHT),0) AS totalHandledWeight, COALESCE(COUNT(DISTINCT MCR.BOX_NUMBER),0) AS totalHandledQuantity COALESCE(SUM(MDR.RECEIVE_WEIGHT),0) AS unloadWeight FROM MW_DISPOSAL_RECORD MDR LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID LEFT JOIN MW_DISPOSAL_HANDLE_RECORD_ITEM MDHRI ON MDHRI.DISPOSAL_RECORD_ID = MDR.ID @@ -73,8 +71,8 @@ MDR.CREATE_TIME, MDR.UPDATE_BY, MDR.UPDATE_TIME, SUM(MCR.WEIGHT) AS totalHandledWeight, COUNT(DISTINCT MCR.BOX_NUMBER) AS totalHandledQuantity COALESCE(SUM(MCR.WEIGHT),0) AS totalHandledWeight, COALESCE(COUNT(DISTINCT MCR.BOX_NUMBER),0)AS totalHandledQuantity FROM MW_DISPOSAL_RECORD MDR LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID LEFT JOIN MW_DISPOSAL_HANDLE_RECORD_ITEM MDHRI ON MDHRI.DISPOSAL_RECORD_ID = MDR.ID @@ -182,5 +180,24 @@ </where> GROUP BY MDR.DEPARTMENT_ID </select> <select id="getDisposalData" resultType="com.sinata.system.domain.vo.DisposalRecordStaticsVO"> SELECT COALESCE(SUM(MCR.WEIGHT),0) AS totalHandledWeight, COALESCE(COUNT(DISTINCT MCR.BOX_NUMBER),0) AS totalHandledQuantity FROM MW_DISPOSAL_HANDLE_RECORD_ITEM MDHRI LEFT JOIN MW_DISPOSAL_RECORD MDR ON MDR.ID = MDHRI.DISPOSAL_RECORD_ID LEFT JOIN MW_COLLECT_RECORD MCR ON MCR.ID = MDHRI.COLLECT_RECORD_ID LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID <where> MDR.DEL_FLAG = 0 <if test="treeCode != null and treeCode !=''"> AND SD.TREE_CODE LIKE CONCAT(#{treeCode}, '%') </if> <if test="query.receiveTimeStart!=null and query.receiveTimeEnd != null"> AND MDR.RECEIVE_TIME BETWEEN #{query.receiveTimeStart} AND #{query.receiveTimeEnd} </if> </where> </select> </mapper> medicalWaste-system/src/main/resources/mapper/system/MwMonitorDeviceMapper.xml
@@ -47,7 +47,7 @@ AND MMD.DEVICE_NAME LIKE CONCAT('%',#{query.deviceName},'%') </if> <if test="query.deviceNumber!=null and query.deviceNumber !=''"> AND MMD.DEVICE_NUMBER LIKE CONCAT('%',#{deviceNumber},'%') AND MMD.DEVICE_NUMBER LIKE CONCAT('%',#{query.deviceNumber},'%') </if> </where> ORDER BY MMD.CREATE_TIME DESC