package com.zd.airbottle.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.zd.airbottle.domain.DbBeacon; import com.zd.airbottle.domain.DbInOutRecord; import com.zd.airbottle.domain.DbStock; import com.zd.airbottle.domain.bo.DbStockBo; import com.zd.airbottle.domain.bo.DbStockParam; import com.zd.airbottle.service.DbBeaconService; import com.zd.airbottle.service.DbInOutRecordService; import com.zd.airbottle.service.DbStockService; import com.zd.airbottle.utils.PageUtil; import com.zd.common.core.annotation.Log; import com.zd.common.core.log.BusinessType; import com.zd.common.core.security.TokenService; import com.zd.common.core.utils.StringUtils; import com.zd.common.core.web.controller.AbstractController; import com.zd.laboratory.api.dto.CheckSubjectDto; import com.zd.laboratory.api.feign.RemoteLaboratoryService; import com.zd.model.constant.HttpStatus; import com.zd.model.domain.ResultData; import com.zd.model.entity.SysUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; /** * @Description 东北大学库存 * @Author hzw * @Date 2023/10/16 17:50 * @Version 2.0 */ @Api(tags = "东北大学库存") @RestController @RequestMapping("/stock") public class DbStockController extends AbstractController { @Autowired private DbStockService dbStockService; @Autowired private DbBeaconService dbBeaconService; @Autowired private DbInOutRecordService dbInOutRecordService; @Autowired private RemoteLaboratoryService remoteLaboratoryService; @Autowired private TokenService tokenService; /** * 库存入库 * * @param dbStockBo * @return */ @ApiOperation(value = "库存入库", notes = "参数说明:gasName 气体名称,level 级别,size 规格,bottleCode 气瓶编号 ") @PostMapping(value = "/enter") public ResultData in(@RequestBody DbStockBo dbStockBo) { //参数检查 paramCheck.notNull(dbStockBo).strNotEmpty(dbStockBo.getGasName()).notNull(dbStockBo.getBeaconTag()).notNull(dbStockBo.getSubjectId()); //验证信标 long count1 = dbStockService.count(new LambdaQueryWrapper().eq(DbStock::getBeaconTag, dbStockBo.getBeaconTag())); if (count1 > 0) { return ResultData.success("当前信标已绑定!"); } //查询实验室所在学院 ResultData> resultData = remoteLaboratoryService.findSubjectInfoList(String.valueOf(dbStockBo.getSubjectId())); if (resultData != null && HttpStatus.SUCCESS == resultData.getCode()) { List data = resultData.getData(); dbStockBo.setCollegeId(data.get(0).getDeptId()); dbStockBo.setCollegeName(data.get(0).getCollegeName()); } DbStock dbStock = new DbStock(); BeanUtils.copyProperties(dbStockBo, dbStock); SysUser sysUser = tokenService.getLoginUser().getSysUser(); dbStock.setCreateBy(sysUser.getUserId()); dbStock.setCreateName(sysUser.getUserName()); tokenService.getLoginUser().getSysUser().getPhonenumber(); // dbStock.setph(get()); if (dbStockService.save(dbStock)) { DbInOutRecord dbInOutRecord = new DbInOutRecord(); BeanUtils.copyProperties(dbStockBo, dbInOutRecord); dbInOutRecord.setType(1); dbInOutRecordService.save(dbInOutRecord); dbBeaconService.update(new LambdaUpdateWrapper().eq(DbBeacon::getBeaconTag, dbInOutRecord.getBeaconTag()).set(DbBeacon::getState, 1)); return ResultData.success("操作成功"); } return ResultData.fail("操作失败"); } /** * 库存出库 * * @param dbStockBo * @return */ @ApiOperation(value = "库存出库", notes = "参数说明:gasName 气体名称,level 级别,size 规格,bottleCode 气瓶编号 ") @PostMapping(value = "/out") public ResultData out(@RequestBody DbStockBo dbStockBo) { //参数检查 paramCheck.notNull(dbStockBo).notNull(dbStockBo.getId()); DbStock stock = dbStockService.getById(dbStockBo.getId()); if (dbStockService.removeById(stock.getId())) { DbInOutRecord dbInOutRecord = new DbInOutRecord(); BeanUtils.copyProperties(stock, dbInOutRecord); dbInOutRecord.setType(2); dbInOutRecordService.save(dbInOutRecord); dbBeaconService.update(new LambdaUpdateWrapper().eq(DbBeacon::getBeaconTag, dbInOutRecord.getBeaconTag()).set(DbBeacon::getState, 0)); return ResultData.success("出库成功"); } return ResultData.fail("出库失败"); } /** * 更新库存信息 * * @Param [dbStockBo] * @Return com.zd.model.domain.ResultData **/ @ApiOperation(value = "更新库存信息", notes = "参数说明:id 必填 ") @Log(title = "更新库存信息", businessType = BusinessType.UPDATE) @PostMapping(value = "/update") public ResultData update(@RequestBody DbStockBo dbStockBo) { //参数检查 paramCheck.notNull(dbStockBo).notNull(dbStockBo.getId()).notNull(dbStockBo.getBeaconTag()); long count = dbStockService.count(new LambdaQueryWrapper().ne(DbStock::getBeaconTag, dbStockBo.getBeaconTag()).eq(DbStock::getBeaconTag, dbStockBo.getBeaconTag())); if (count > 0) { return ResultData.success("信标标签已存在!"); } if (dbStockService.update(new LambdaUpdateWrapper().eq(DbStock::getId, dbStockBo.getId()).set(DbStock::getBeaconTag, dbStockBo.getBeaconTag()))) { return ResultData.success("操作成功"); } return ResultData.fail("操作失败"); } /** * 通过ID获取库存详情 * * @param id * @return */ @ApiOperation(value = "通过ID获取库存详情", notes = "参数说明:库存id 必填") @GetMapping(value = "/findById") public ResultData find(@RequestParam("id") Long id) { paramCheck.notNull(id); DbStock dbStock = dbStockService.getById(id); return ResultData.success(dbStock); } /** * 获取库存list * * @param dbStockParam * @return */ @ApiOperation(value = "获取库存list", notes = "参数说明:searchValue 关键字") @PostMapping(value = "/list") public ResultData list(@RequestBody DbStockParam dbStockParam) { //查询条件 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); //气瓶编号 气瓶名称 实验室名称 if (StringUtils.isNotBlank(dbStockParam.getSearchValue())) { queryWrapper.like(DbStock::getGasName, dbStockParam.getSearchValue()).or().like(DbStock::getSubjectName, dbStockParam.getSearchValue()); } if (Objects.nonNull(dbStockParam.getCollegeId())) { queryWrapper.eq(DbStock::getCollegeId, dbStockParam.getCollegeId()); } if (Objects.nonNull(dbStockParam.getStartTime()) && Objects.nonNull(dbStockParam.getEndTime())) { queryWrapper.between(DbStock::getValidPeriod, dbStockParam.getStartTime(), dbStockParam.getEndTime()); } //倒叙 queryWrapper.orderByDesc(DbStock::getId); IPage result = dbStockService.page(PageUtil.getQuery(dbStockParam.getPageNum(), dbStockParam.getPageSize()), queryWrapper); return ResultData.success(result); } /** * 通过信标查询库信息 * * @param BeaconTag * @return */ @ApiOperation(value = "通过信标查询库信息", notes = "参数说明:subId 必填") @GetMapping(value = "/findByBeaconTag") public ResultData findByBancon(@RequestParam("BeaconTag") String BeaconTag) { paramCheck.strNotEmpty(BeaconTag); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); queryWrapper.eq(DbStock::getBeaconTag, BeaconTag); DbStock dbStock = dbStockService.getOne(queryWrapper); return ResultData.success(dbStock); } /** * 通过subId查询库存列表 * * @param subId * @return */ @ApiOperation(value = "通过subId查询库存列表", notes = "参数说明:subId 必填") @GetMapping(value = "/findBySubId") public ResultData findBySubId(@RequestParam("subId") Long subId) { paramCheck.notNull(subId); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); queryWrapper.eq(DbStock::getSubjectId, subId); List list = dbStockService.list(queryWrapper); return ResultData.success(list); } }