DbStockController.java 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package com.zd.airbottle.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.zd.airbottle.domain.DbBeacon;
  6. import com.zd.airbottle.domain.DbInOutRecord;
  7. import com.zd.airbottle.domain.DbStock;
  8. import com.zd.airbottle.domain.bo.DbStockBo;
  9. import com.zd.airbottle.domain.bo.DbStockParam;
  10. import com.zd.airbottle.service.DbBeaconService;
  11. import com.zd.airbottle.service.DbInOutRecordService;
  12. import com.zd.airbottle.service.DbStockService;
  13. import com.zd.airbottle.utils.PageUtil;
  14. import com.zd.common.core.annotation.Log;
  15. import com.zd.common.core.log.BusinessType;
  16. import com.zd.common.core.security.TokenService;
  17. import com.zd.common.core.utils.StringUtils;
  18. import com.zd.common.core.web.controller.AbstractController;
  19. import com.zd.laboratory.api.dto.CheckSubjectDto;
  20. import com.zd.laboratory.api.feign.RemoteLaboratoryService;
  21. import com.zd.model.constant.HttpStatus;
  22. import com.zd.model.domain.ResultData;
  23. import com.zd.model.entity.SysUser;
  24. import io.swagger.annotations.Api;
  25. import io.swagger.annotations.ApiOperation;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.web.bind.annotation.*;
  29. import java.util.List;
  30. import java.util.Objects;
  31. /**
  32. * @Description 东北大学库存
  33. * @Author hzw
  34. * @Date 2023/10/16 17:50
  35. * @Version 2.0
  36. */
  37. @Api(tags = "东北大学库存")
  38. @RestController
  39. @RequestMapping("/stock")
  40. public class DbStockController extends AbstractController {
  41. @Autowired
  42. private DbStockService dbStockService;
  43. @Autowired
  44. private DbBeaconService dbBeaconService;
  45. @Autowired
  46. private DbInOutRecordService dbInOutRecordService;
  47. @Autowired
  48. private RemoteLaboratoryService remoteLaboratoryService;
  49. @Autowired
  50. private TokenService tokenService;
  51. /**
  52. * 库存入库
  53. *
  54. * @param dbStockBo
  55. * @return
  56. */
  57. @ApiOperation(value = "库存入库", notes = "参数说明:gasName 气体名称,level 级别,size 规格,bottleCode 气瓶编号 ")
  58. @PostMapping(value = "/enter")
  59. public ResultData in(@RequestBody DbStockBo dbStockBo) {
  60. //参数检查
  61. paramCheck.notNull(dbStockBo).strNotEmpty(dbStockBo.getGasName()).notNull(dbStockBo.getBeaconTag()).notNull(dbStockBo.getSubjectId());
  62. //验证信标
  63. long count1 = dbStockService.count(new LambdaQueryWrapper<DbStock>().eq(DbStock::getBeaconTag, dbStockBo.getBeaconTag()));
  64. if (count1 > 0) {
  65. return ResultData.success("当前信标已绑定!");
  66. }
  67. //查询实验室所在学院
  68. ResultData<List<CheckSubjectDto>> resultData = remoteLaboratoryService.findSubjectInfoList(String.valueOf(dbStockBo.getSubjectId()));
  69. if (resultData != null && HttpStatus.SUCCESS == resultData.getCode()) {
  70. List<CheckSubjectDto> data = resultData.getData();
  71. dbStockBo.setCollegeId(data.get(0).getDeptId());
  72. dbStockBo.setCollegeName(data.get(0).getCollegeName());
  73. }
  74. DbStock dbStock = new DbStock();
  75. BeanUtils.copyProperties(dbStockBo, dbStock);
  76. SysUser sysUser = tokenService.getLoginUser().getSysUser();
  77. dbStock.setCreateBy(sysUser.getUserId());
  78. dbStock.setCreateName(sysUser.getUserName());
  79. tokenService.getLoginUser().getSysUser().getPhonenumber();
  80. // dbStock.setph(get());
  81. if (dbStockService.save(dbStock)) {
  82. DbInOutRecord dbInOutRecord = new DbInOutRecord();
  83. BeanUtils.copyProperties(dbStockBo, dbInOutRecord);
  84. dbInOutRecord.setType(1);
  85. dbInOutRecordService.save(dbInOutRecord);
  86. dbBeaconService.update(new LambdaUpdateWrapper<DbBeacon>().eq(DbBeacon::getBeaconTag, dbInOutRecord.getBeaconTag()).set(DbBeacon::getState, 1));
  87. return ResultData.success("操作成功");
  88. }
  89. return ResultData.fail("操作失败");
  90. }
  91. /**
  92. * 库存出库
  93. *
  94. * @param dbStockBo
  95. * @return
  96. */
  97. @ApiOperation(value = "库存出库", notes = "参数说明:gasName 气体名称,level 级别,size 规格,bottleCode 气瓶编号 ")
  98. @PostMapping(value = "/out")
  99. public ResultData out(@RequestBody DbStockBo dbStockBo) {
  100. //参数检查
  101. paramCheck.notNull(dbStockBo).notNull(dbStockBo.getId());
  102. DbStock stock = dbStockService.getById(dbStockBo.getId());
  103. if (dbStockService.removeById(stock.getId())) {
  104. DbInOutRecord dbInOutRecord = new DbInOutRecord();
  105. BeanUtils.copyProperties(stock, dbInOutRecord);
  106. dbInOutRecord.setType(2);
  107. dbInOutRecordService.save(dbInOutRecord);
  108. dbBeaconService.update(new LambdaUpdateWrapper<DbBeacon>().eq(DbBeacon::getBeaconTag, dbInOutRecord.getBeaconTag()).set(DbBeacon::getState, 0));
  109. return ResultData.success("出库成功");
  110. }
  111. return ResultData.fail("出库失败");
  112. }
  113. /**
  114. * 更新库存信息
  115. *
  116. * @Param [dbStockBo]
  117. * @Return com.zd.model.domain.ResultData
  118. **/
  119. @ApiOperation(value = "更新库存信息", notes = "参数说明:id 必填 ")
  120. @Log(title = "更新库存信息", businessType = BusinessType.UPDATE)
  121. @PostMapping(value = "/update")
  122. public ResultData update(@RequestBody DbStockBo dbStockBo) {
  123. //参数检查
  124. paramCheck.notNull(dbStockBo).notNull(dbStockBo.getId()).notNull(dbStockBo.getBeaconTag());
  125. long count = dbStockService.count(new LambdaQueryWrapper<DbStock>().ne(DbStock::getBeaconTag, dbStockBo.getBeaconTag()).eq(DbStock::getBeaconTag, dbStockBo.getBeaconTag()));
  126. if (count > 0) {
  127. return ResultData.success("信标标签已存在!");
  128. }
  129. if (dbStockService.update(new LambdaUpdateWrapper<DbStock>().eq(DbStock::getId, dbStockBo.getId()).set(DbStock::getBeaconTag, dbStockBo.getBeaconTag()))) {
  130. return ResultData.success("操作成功");
  131. }
  132. return ResultData.fail("操作失败");
  133. }
  134. /**
  135. * 通过ID获取库存详情
  136. *
  137. * @param id
  138. * @return
  139. */
  140. @ApiOperation(value = "通过ID获取库存详情", notes = "参数说明:库存id 必填")
  141. @GetMapping(value = "/findById")
  142. public ResultData find(@RequestParam("id") Long id) {
  143. paramCheck.notNull(id);
  144. DbStock dbStock = dbStockService.getById(id);
  145. return ResultData.success(dbStock);
  146. }
  147. /**
  148. * 获取库存list
  149. *
  150. * @param dbStockParam
  151. * @return
  152. */
  153. @ApiOperation(value = "获取库存list", notes = "参数说明:searchValue 关键字")
  154. @PostMapping(value = "/list")
  155. public ResultData list(@RequestBody DbStockParam dbStockParam) {
  156. //查询条件
  157. LambdaQueryWrapper<DbStock> queryWrapper = new LambdaQueryWrapper<>();
  158. //气瓶编号 气瓶名称 实验室名称
  159. if (StringUtils.isNotBlank(dbStockParam.getSearchValue())) {
  160. queryWrapper.like(DbStock::getGasName, dbStockParam.getSearchValue()).or().like(DbStock::getSubjectName, dbStockParam.getSearchValue());
  161. }
  162. if (Objects.nonNull(dbStockParam.getCollegeId())) {
  163. queryWrapper.eq(DbStock::getCollegeId, dbStockParam.getCollegeId());
  164. }
  165. if (Objects.nonNull(dbStockParam.getStartTime()) && Objects.nonNull(dbStockParam.getEndTime())) {
  166. queryWrapper.between(DbStock::getValidPeriod, dbStockParam.getStartTime(), dbStockParam.getEndTime());
  167. }
  168. //倒叙
  169. queryWrapper.orderByDesc(DbStock::getId);
  170. IPage<DbStock> result = dbStockService.page(PageUtil.getQuery(dbStockParam.getPageNum(), dbStockParam.getPageSize()), queryWrapper);
  171. return ResultData.success(result);
  172. }
  173. /**
  174. * 通过信标查询库信息
  175. *
  176. * @param BeaconTag
  177. * @return
  178. */
  179. @ApiOperation(value = "通过信标查询库信息", notes = "参数说明:subId 必填")
  180. @GetMapping(value = "/findByBeaconTag")
  181. public ResultData findByBancon(@RequestParam("BeaconTag") String BeaconTag) {
  182. paramCheck.strNotEmpty(BeaconTag);
  183. LambdaQueryWrapper<DbStock> queryWrapper = new LambdaQueryWrapper();
  184. queryWrapper.eq(DbStock::getBeaconTag, BeaconTag);
  185. DbStock dbStock = dbStockService.getOne(queryWrapper);
  186. return ResultData.success(dbStock);
  187. }
  188. /**
  189. * 通过subId查询库存列表
  190. *
  191. * @param subId
  192. * @return
  193. */
  194. @ApiOperation(value = "通过subId查询库存列表", notes = "参数说明:subId 必填")
  195. @GetMapping(value = "/findBySubId")
  196. public ResultData findBySubId(@RequestParam("subId") Long subId) {
  197. paramCheck.notNull(subId);
  198. LambdaQueryWrapper<DbStock> queryWrapper = new LambdaQueryWrapper();
  199. queryWrapper.eq(DbStock::getSubjectId, subId);
  200. List<DbStock> list = dbStockService.list(queryWrapper);
  201. return ResultData.success(list);
  202. }
  203. }