| | |
| | | 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.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.MwCollectRecord; |
| | | 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.MwCollectRecordDTO; |
| | | 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.ISysUserService; |
| | | import com.sinata.system.service.MwCollectRecordService; |
| | | import com.sinata.system.service.*; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | |
| | | import javax.validation.Valid; |
| | | import java.io.IOException; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | 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; |
| | | |
| | | |
| | | @ApiOperation("新增医废记录") |
| | | @PostMapping("/add") |
| | | public R<?> edit(@Valid @RequestBody MwCollectRecord mwCollectRecord) { |
| | | public R<?> add(@Valid @RequestBody MwCollectRecord mwCollectRecord) { |
| | | MwBox one = boxService.lambdaQuery().eq(MwBox::getBoxNumber, mwCollectRecord.getBoxNumber()).one(); |
| | | mwCollectRecord.setBoxId(one.getId()); |
| | | 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); |
| | | return R.ok(collectDtos); |
| | | } |
| | | |
| | | @ApiOperation(value = "装车",tags = "运输人员") |
| | | @PostMapping("/box/collect") |
| | | public R<List<CollectDto>> collect(@RequestBody SignCollectDto signCollectDto) { |
| | | SysUser sysUser = SecurityUtils.getLoginUser().getUser(); |
| | | |
| | | //将收集记录的状态改变 |
| | | 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.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); |
| | | return R.ok(); |
| | | |
| | | } |
| | | |
| | | @ApiOperation(value = "运输统计上",tags = "运输人员") |
| | | @PostMapping("/trans/collect/total") |
| | | public R<List<CollectTotalUpDto>> tanscollecttotal1(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(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(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<HospitalCollectTotalUpDto>> tanscollecttotal3(String boxNum) { |
| | | SysUser sysUser = SecurityUtils.getLoginUser().getUser(); |
| | | MwCollectRecord one = collectRecordService.lambdaQuery().eq(MwCollectRecord::getBoxNumber, boxNum).eq(MwCollectRecord::getStatus, 2).last("limit 1").one(); |
| | | |
| | | //先获取医院ids |
| | | List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus,2).eq(MwCollectRecord::getCheckoutUserId, one.getCheckoutUserId()).groupBy(MwCollectRecord::getDepartmentId).list(); |
| | | //循环医院,然后放入 |
| | | List<HospitalCollectTotalUpDto> list1 = new ArrayList<>(); |
| | | for (MwCollectRecord mwCollectRecord : list) { |
| | | List<CollectTotalUpDto> collectTotalUpDtos = collectRecordService.collectTotal1(null, 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/confirm") |
| | | public R tanscollecttotal4(String boxNum) { |
| | | SysUser sysUser = SecurityUtils.getLoginUser().getUser(); |
| | | SysDepartment byId = departmentService.getById(sysUser.getDepartmentId()); |
| | | //将record变为已接受 |
| | | List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus,2).eq(MwCollectRecord::getBoxNumber, boxNum).list(); |
| | | 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(); |
| | | List<CollectDto> collectDtos = collectRecordService.getGroupWithStatus(boxNumber,sysUser.getDepartmentId(),3); |
| | | return R.ok(collectDtos); |
| | | } |
| | | @ApiOperation(value = "处置操作",tags = "处置人员") |
| | | @PostMapping("/wait/out") |
| | | public R<List<CollectDto>> list2(String boxNumber) { |
| | | SysUser sysUser = SecurityUtils.getLoginUser().getUser(); |
| | | SysDepartment byId = departmentService.getById(sysUser.getDepartmentId()); |
| | | List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getStatus, 3).eq(MwCollectRecord::getBoxNumber, boxNumber).list(); |
| | | |
| | | //新增处置记录 |
| | | 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); |
| | | } |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @ApiOperation(value = "已装车列表",tags = "运输人员") |
| | | @PostMapping("/box/has/collect") |
| | | public R<List<CollectCarTotalUpDto>> hascollect() { |
| | | //获取车辆id |
| | | SysUser sysUser = SecurityUtils.getLoginUser().getUser(); |
| | | //通过车辆id查询列表 |
| | | List<CollectCarTotalUpDto> list = collectRecordService.carGroup(sysUser.getCarId()); |
| | | return R.ok(list); |
| | | |
| | | } |
| | | |
| | | @ApiOperation(value = "已装车列表详情",tags = "运输人员") |
| | | @PostMapping("/box/has/collect/detail") |
| | | public R<List<CollectDto>> hascollectdetail(@RequestParam Long hospitalId) { |
| | | List<CollectDto> collectDtos = collectRecordService.getGroup1("",hospitalId); |
| | | return R.ok(collectDtos); |
| | | } |
| | | |
| | | @ApiOperation("库存信息") |
| | | @PostMapping("/list") |
| | | public R<List<CollectDto>> list(String boxNumber) { |