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.common.utils.StringUtils;
|
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.math.BigDecimal;
|
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) {
|
// SysDepartment byId = sysDepartmentService.getMyDepartment();
|
SysDepartment byId = sysDepartmentService.getById(areaId);
|
List<SysDepartment> list = sysDepartmentService.lambdaQuery().likeRight(SysDepartment::getTreeCode, byId.getTreeCode()).like(StringUtils.isNotEmpty(name), 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,Long areaId) {
|
SysDepartment byId = sysDepartmentService.getById(areaId);
|
List<SysDepartment> list = sysDepartmentService.lambdaQuery().likeRight(SysDepartment::getTreeCode, byId.getTreeCode()).like(name!=null,SysDepartment::getDepartmentName,name).eq(SysDepartment::getOrgType, 3).list();
|
LocalDate now = LocalDate.now();
|
for (SysDepartment sysDepartment : list) {
|
//获取库存总量
|
BigDecimal count1 = collectRecordService.lambdaQuery().eq(MwCollectRecord::getReceiveDepartmentId, sysDepartment.getId()).list().stream()
|
.map(MwCollectRecord::getWeight)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
//获取接收数量
|
BigDecimal count2 = collectRecordService.lambdaQuery().ge(MwCollectRecord::getReceiveTime,now.atStartOfDay()).le(MwCollectRecord::getReceiveTime,now.atTime(23,59,59)).eq(MwCollectRecord::getReceiveDepartmentId, sysDepartment.getId()).list().stream()
|
.map(MwCollectRecord::getWeight)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
//获取处置数量
|
BigDecimal count3 = collectRecordService.lambdaQuery().ge(MwCollectRecord::getDisposalTime,now.atStartOfDay()).le(MwCollectRecord::getDisposalTime,now.atTime(23,59,59)).eq(MwCollectRecord::getReceiveDepartmentId, sysDepartment.getId()).list().stream()
|
.map(MwCollectRecord::getWeight)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
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();
|
if (one1!=null){
|
one.setBoxTime(one1.getBoxTime());
|
}
|
one.setCount(count);
|
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(MwCheckoutRecord::getCheckoutTime, date.atStartOfDay()).le(MwCheckoutRecord::getCheckoutTime , date.atTime(23,59,59)).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();
|
BigDecimal count = collectRecordService.lambdaQuery().eq(MwCollectRecord::getReceiveDepartmentId, departmentId).ge(MwCollectRecord::getReceiveTime, now.atStartOfDay()).le(MwCollectRecord::getReceiveTime,now.atTime(23,59,59)).list().stream()
|
.map(MwCollectRecord::getWeight)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
BigDecimal count1 = collectRecordService.lambdaQuery().eq(MwCollectRecord::getReceiveDepartmentId, departmentId).ge(MwCollectRecord::getDisposalTime, now.atStartOfDay()).le(MwCollectRecord::getDisposalTime,now.atTime(23,59,59)).list().stream()
|
.map(MwCollectRecord::getWeight)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
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));
|
}
|
|
|
|
|
|
}
|