GoodsController.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. package com.mrxu.admin.controller.sales;
  2. import com.alibaba.fastjson.JSON;
  3. import com.mrxu.admin.controller.AdminBaseController;
  4. import com.mrxu.framework.boot.bean.LayuiPage;
  5. import com.mrxu.framework.boot.bean.PageResult;
  6. import com.mrxu.framework.boot.bean.ResponseObj;
  7. import com.mrxu.framework.common.MrxuConst;
  8. import com.mrxu.framework.common.util.MrxuAssert;
  9. import com.mrxu.sales.entity.Goods;
  10. import com.mrxu.sales.entity.GoodsClass;
  11. import com.mrxu.sales.entity.HisDrug;
  12. import com.mrxu.sales.entity.Supplier;
  13. import com.mrxu.sales.export.GoodsExport;
  14. import com.mrxu.sales.query.GoodsDto;
  15. import com.mrxu.sales.service.GoodsClassService;
  16. import com.mrxu.sales.service.GoodsService;
  17. import com.mrxu.sales.service.HisDrugService;
  18. import com.mrxu.sales.service.SupplierService;
  19. import io.swagger.annotations.Api;
  20. import lombok.RequiredArgsConstructor;
  21. import org.apache.shiro.authz.annotation.RequiresPermissions;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Controller;
  24. import org.springframework.ui.Model;
  25. import org.springframework.web.bind.annotation.RequestBody;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.RequestParam;
  28. import org.springframework.web.bind.annotation.ResponseBody;
  29. import org.springframework.web.multipart.MultipartFile;
  30. import javax.servlet.http.HttpServletResponse;
  31. import javax.validation.Valid;
  32. import java.math.BigDecimal;
  33. import java.util.List;
  34. @Api(tags = "商品管理")
  35. @Controller
  36. @RequestMapping("/sales/goods")
  37. @RequiredArgsConstructor(onConstructor = @__(@Autowired))
  38. public class GoodsController extends AdminBaseController {
  39. private final GoodsClassService classService;
  40. private final SupplierService supplierService;
  41. private final GoodsService goodsService;
  42. private final HisDrugService hisDrugService;
  43. @RequiresPermissions("sales:goods:read")
  44. @RequestMapping("index.html")
  45. public String index(Model model) {
  46. List<Supplier> supplierList = supplierService.list(getTenantId());
  47. model.addAttribute("supplierJson", JSON.toJSONString(supplierList));
  48. model.addAttribute("supplierList",supplierList);
  49. return "sales/goods.html";
  50. }
  51. @RequiresPermissions("sales:goods:read")
  52. @ResponseBody
  53. @RequestMapping("/page.json")
  54. public LayuiPage<Goods> page(GoodsDto queryDto) {
  55. PageResult<Goods> rs = goodsService.page(getTenantId(),queryDto);
  56. return renderLayuiPage(rs);
  57. }
  58. @RequiresPermissions("sales:goods:read")
  59. @ResponseBody
  60. @RequestMapping("/export.json")
  61. public void export(HttpServletResponse response, GoodsDto queryDto) {
  62. queryDto.setPageSize(MrxuConst.MAX_PAGE_SIZE);
  63. export(response,"药品", GoodsExport.class,goodsService.export(getTenantId(),queryDto));
  64. }
  65. @RequiresPermissions("sales:goods:read")
  66. @ResponseBody
  67. @RequestMapping("/classList.json")
  68. public ResponseObj<List<GoodsClass>> classList() {
  69. return success(classService.list(getTenantId(),null));
  70. }
  71. @RequiresPermissions("sales:goods:read")
  72. @ResponseBody
  73. @RequestMapping("/getById.json")
  74. public ResponseObj<Goods> getById(Integer id) {
  75. return success(goodsService.getById(getTenantId(),id));
  76. }
  77. @RequiresPermissions("sales:goods:update")
  78. @ResponseBody
  79. @RequestMapping("/save.json")
  80. public ResponseObj<Boolean> save(@Valid @RequestBody Goods bean) {
  81. if(bean.getStatus() == null) {
  82. bean.setStatus(MrxuConst.disable);
  83. }
  84. if(bean.getSellOut() == null) {
  85. bean.setSellOut(MrxuConst.disable);
  86. }
  87. return success(goodsService.saveOrUpdate(getTenantId(),bean,getUsername()));
  88. }
  89. @RequiresPermissions("sales:goods:update")
  90. @ResponseBody
  91. @RequestMapping("/updateStatus.json")
  92. public ResponseObj<Boolean> updateStatus(Integer id, Integer status) {
  93. Goods bean = new Goods();
  94. bean.setId(id);
  95. bean.setStatus(status);
  96. return success(goodsService.saveOrUpdate(getTenantId(),bean,getUsername()));
  97. }
  98. @RequiresPermissions("sales:goods:remove")
  99. @ResponseBody
  100. @RequestMapping("/remove.json")
  101. public ResponseObj<Boolean> remove(Integer id) {
  102. return success(goodsService.remove(getTenantId(),id));
  103. }
  104. @RequiresPermissions("sales:goods:update")
  105. @ResponseBody
  106. @RequestMapping("/classSave.json")
  107. public ResponseObj<Boolean> classSave(@Valid @RequestBody GoodsClass bean) {
  108. if(bean.getStatus() == null) {
  109. bean.setStatus(MrxuConst.disable);
  110. }
  111. MrxuAssert.isFalse(bean.getParentId().equals(bean.getId()),"父节点不能是自己");
  112. GoodsClass exist = classService.getByKey(getTenantId(),"name",bean.getName());
  113. MrxuAssert.isTrue(exist == null || exist.getId().equals(bean.getId()),
  114. "【"+bean.getName()+"】已存在");
  115. return success(classService.saveOrUpdate(getTenantId(),bean,getUsername()));
  116. }
  117. @RequiresPermissions("sales:goods:remove")
  118. @ResponseBody
  119. @RequestMapping("/removeClass.json")
  120. public ResponseObj<Boolean> removeClass(Integer id) {
  121. return success(classService.remove(getTenantId(),id));
  122. }
  123. @RequiresPermissions("sales:goods:update")
  124. @ResponseBody
  125. @RequestMapping("/downloadTemplate.json")
  126. public void downloadTemplate(HttpServletResponse response) {
  127. downloadFile(response,"药品导入模版.xlsx");
  128. }
  129. @RequiresPermissions("sales:goods:update")
  130. @ResponseBody
  131. @RequestMapping("/importGoods.json")
  132. public ResponseObj<Object> importGoods(@RequestParam("file") MultipartFile file) {
  133. goodsService.importGoods(getTenantId(),file,getUsername());
  134. return success();
  135. }
  136. @RequiresPermissions("sales:goods:update")
  137. @ResponseBody
  138. @RequestMapping("/getSystemDrug.json")
  139. public ResponseObj<HisDrug> getSystemDrug(String barcode) {
  140. return success(hisDrugService.getByBarcode(barcode));
  141. }
  142. @RequiresPermissions("sales:goods:update")
  143. @ResponseBody
  144. @RequestMapping("/batchSet.json")
  145. public ResponseObj<Object> batchSet(BigDecimal minStock,BigDecimal maxStock) {
  146. goodsService.batchSet(getTenantId(),minStock,maxStock);
  147. return success();
  148. }
  149. @RequiresPermissions("sales:goods:update")
  150. @ResponseBody
  151. @RequestMapping("/stocktaking.json")
  152. public ResponseObj<Object> stocktaking(Integer id,BigDecimal newStock) {
  153. goodsService.stocktaking(getTenantId(),id,newStock,getUsername());
  154. return success();
  155. }
  156. @RequiresPermissions("sales:goods:remove")
  157. @ResponseBody
  158. @RequestMapping("/updateSupperName.json")
  159. public ResponseObj<Object> temp() {
  160. List<Goods> list = goodsService.list();
  161. for(Goods goods : list) {
  162. goods.setSupplierName(supplierService.getNamesByIds(goods.getTenantId(),goods.getSupplierId()));
  163. goodsService.updateById(goods);
  164. }
  165. return success();
  166. }
  167. }