StocktakingController.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. package com.jsh.erp.controller.stocktaking;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  4. import com.jsh.erp.base.AjaxResult;
  5. import com.jsh.erp.base.BaseController;
  6. import com.jsh.erp.base.TableDataInfo;
  7. import com.jsh.erp.constants.ExceptionConstants;
  8. import com.jsh.erp.datasource.dto.TaskStocktakingDTO;
  9. import com.jsh.erp.datasource.dto.TaskStocktakingItemDTO;
  10. import com.jsh.erp.datasource.dto.TaskStocktakingItemQueryDTO;
  11. import com.jsh.erp.datasource.dto.TaskStocktakingQueryDTO;
  12. import com.jsh.erp.datasource.entities.*;
  13. import com.jsh.erp.datasource.vo.SpinnerVO;
  14. import com.jsh.erp.datasource.vo.TaskStocktakingVO;
  15. import com.jsh.erp.query.LambdaQueryWrapperX;
  16. import com.jsh.erp.service.*;
  17. import com.jsh.erp.utils.DateUtils;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import org.springframework.web.bind.annotation.*;
  21. import javax.annotation.Resource;
  22. import java.util.Arrays;
  23. import java.util.Date;
  24. import java.util.List;
  25. @RestController
  26. @RequestMapping(value = "/stocktaking")
  27. @Api(tags = {"盘点接口"})
  28. public class StocktakingController extends BaseController {
  29. @Resource
  30. private TaskStocktakingService taskStocktakingService;
  31. @Resource
  32. private UserService userService;
  33. @Resource
  34. private TaskStocktakingItemService taskStocktakingItemService;
  35. @Resource
  36. private MaterialBatchService materialBatchService;
  37. @ApiOperation("盘点任务列表")
  38. @PostMapping("/list")
  39. public TableDataInfo list(@RequestBody TaskStocktakingQueryDTO taskStocktakingQueryDTO){
  40. startPage();
  41. List<TaskStocktakingVO> list = taskStocktakingService.listBy(taskStocktakingQueryDTO);
  42. return getDataTable(list);
  43. }
  44. @ApiOperation("新增盘点任务")
  45. @PostMapping("/add")
  46. public AjaxResult add(@RequestBody TaskStocktakingDTO taskStocktakingDTO) {
  47. boolean b = taskStocktakingService.add(taskStocktakingDTO);
  48. if (!b){
  49. return AjaxResult.error("创建失败,请联系系统管理员");
  50. }
  51. return AjaxResult.success();
  52. }
  53. @ApiOperation("负责人下拉列表")
  54. @GetMapping("/creatorSpinnerList")
  55. public AjaxResult creatorSpinnerList() {
  56. List<SpinnerVO> spinnerVOList = userService.creatorSpinnerList();
  57. return AjaxResult.success(spinnerVOList);
  58. }
  59. /**
  60. * 查询任务详情
  61. * @param id
  62. * @return
  63. */
  64. @ApiOperation("任务详情")
  65. @GetMapping("/detail/{id}")
  66. public AjaxResult detail(@PathVariable("id") Long id) throws Exception{
  67. return AjaxResult.success(taskStocktakingService.detail(id));
  68. }
  69. /**
  70. * 查询任务详情
  71. * @param number
  72. * @return
  73. */
  74. @ApiOperation("任务详情")
  75. @GetMapping("/detail/number/{number}")
  76. public AjaxResult detailByNumber(@PathVariable("number") String number) {
  77. return AjaxResult.success(taskStocktakingService.detail(number));
  78. }
  79. /**
  80. * 任务详情-商品列表
  81. * @param taskStocktakingItemQueryDTO 筛选数据
  82. * @return
  83. */
  84. @ApiOperation("任务详情-商品列表")
  85. @PostMapping("/detailByItemList")
  86. public AjaxResult detailByItemList(@RequestBody TaskStocktakingItemQueryDTO taskStocktakingItemQueryDTO) {
  87. if (ObjectUtil.isEmpty(taskStocktakingItemQueryDTO.getTaskStocktakingId())) {
  88. return AjaxResult.error("请选择盘点任务");
  89. }
  90. return AjaxResult.success(taskStocktakingService.listByTaskStocktakingId(taskStocktakingItemQueryDTO));
  91. }
  92. @ApiOperation("任务详情-修改")
  93. @PostMapping("/detailUpdate")
  94. public AjaxResult detailUpdate(@RequestBody TaskStocktakingDTO taskStocktakingDTO) {
  95. //校验盘点状态,如果不是未审核或审核失败则提示
  96. TaskStocktaking taskStocktaking = taskStocktakingService.getById(taskStocktakingDTO.getId());
  97. if(!taskStocktaking.getTaskStatus().equals(0) && !taskStocktaking.getTaskStatus().equals(8)) {
  98. return AjaxResult.error(ExceptionConstants.TASK_STOCKTAKING_BILL_CANNOT_EDIT_MSG);
  99. }
  100. boolean b = taskStocktakingService.detailUpdate(taskStocktakingDTO);
  101. if (!b){
  102. return AjaxResult.error("修改失败,请联系系统管理员");
  103. }
  104. return AjaxResult.success();
  105. }
  106. /**
  107. * 任务详情-商品列表-编辑
  108. * @return
  109. */
  110. @ApiOperation("任务详情-商品-编辑")
  111. @PostMapping("/itemUpdate")
  112. public AjaxResult itemUpdate(@RequestBody TaskStocktakingItemDTO taskStocktakingItemDTO) throws Exception {
  113. User currentUser = userService.getCurrentUser();
  114. taskStocktakingItemService.update(new UpdateWrapper<TaskStocktakingItem>()
  115. .set("new_inventory", taskStocktakingItemDTO.getNewInventory())
  116. .set("new_position", taskStocktakingItemDTO.getNewPosition())
  117. .set("difference_count", taskStocktakingItemDTO.getDifferenceCount())
  118. .set("difference_reason", taskStocktakingItemDTO.getDifferenceReason())
  119. .set("creator", currentUser.getId())
  120. .set("oper_time", DateUtils.getTime())
  121. .eq("id", taskStocktakingItemDTO.getId()));
  122. return AjaxResult.success();
  123. }
  124. /**
  125. * 任务详情-商品-删除
  126. * @param id 商品ID
  127. * @return
  128. */
  129. @ApiOperation("任务详情-商品-删除")
  130. @GetMapping("/itemDelete/{id}")
  131. public AjaxResult itemDelete(@PathVariable("id") Long id) {
  132. taskStocktakingItemService.update(new UpdateWrapper<TaskStocktakingItem>().set("delete_flag", true).eq("id", id));
  133. return AjaxResult.success();
  134. }
  135. @ApiOperation("取消任务")
  136. @GetMapping("/taskCancel/{ids}")
  137. public AjaxResult taskCancel(@PathVariable("ids") Long[] ids) {
  138. Arrays.asList(ids).forEach(id -> {
  139. taskStocktakingService.update(new UpdateWrapper<TaskStocktaking>().eq("id", id).set("task_status", "4"));
  140. });
  141. return AjaxResult.success();
  142. }
  143. @ApiOperation("删除任务")
  144. @GetMapping("/taskDelete/{ids}")
  145. public AjaxResult taskDelete(@PathVariable("ids") Long[] ids) {
  146. Arrays.asList(ids).forEach(id -> {
  147. taskStocktakingService.update(new UpdateWrapper<TaskStocktaking>().eq("id", id).set("delete_flag", true));
  148. });
  149. return AjaxResult.success();
  150. }
  151. @ApiOperation("开始任务")
  152. @GetMapping("/startTask/{id}")
  153. public AjaxResult startTask(@PathVariable("id") Long id) {
  154. taskStocktakingService.update(new UpdateWrapper<TaskStocktaking>().set("task_status", 2).eq("id", id));
  155. return AjaxResult.success();
  156. }
  157. @ApiOperation("完成任务")
  158. @GetMapping("/taskComplete/{id}")
  159. public AjaxResult taskComplete(@PathVariable("id") Long id) throws Exception {
  160. User currentUser = userService.getCurrentUser();
  161. taskStocktakingService.update(new UpdateWrapper<TaskStocktaking>().set("task_status", 3)
  162. .set("oper_time", new Date())
  163. .set("oper_by", currentUser.getId())
  164. .eq("id", id));
  165. return AjaxResult.success();
  166. }
  167. @ApiOperation("任务更新库存")
  168. @GetMapping("/taskUpdateStock/{ids}")
  169. public AjaxResult updateStock(@PathVariable("ids") Long[] ids) throws Exception {
  170. for (Long id : ids) {
  171. taskStocktakingService.update(new UpdateWrapper<TaskStocktaking>().set("task_status", 5).eq("id", id));
  172. List<TaskStocktakingItem> list = taskStocktakingItemService.list(new LambdaQueryWrapperX<TaskStocktakingItem>().eq(TaskStocktakingItem::getTaskStocktakingId,id));
  173. for (TaskStocktakingItem taskStocktakingItem : list) {
  174. MaterialBatch materialBatch = materialBatchService.getById(taskStocktakingItem.getMaterialItemId());
  175. materialBatch.setInventory(taskStocktakingItem.getNewInventory());
  176. materialBatch.setPosition(taskStocktakingItem.getNewPosition());
  177. materialBatchService.updateInventory("盘点",taskStocktakingItem.getId(),materialBatch);
  178. }
  179. }
  180. return AjaxResult.success();
  181. }
  182. }