package com.mrxu.admin.controller.sales; import com.alibaba.fastjson.JSON; import com.mrxu.admin.controller.AdminBaseController; import com.mrxu.framework.boot.bean.LayuiPage; import com.mrxu.framework.boot.bean.PageResult; import com.mrxu.framework.boot.bean.ResponseObj; import com.mrxu.framework.common.MrxuConst; import com.mrxu.framework.common.util.MrxuAssert; import com.mrxu.sales.entity.Goods; import com.mrxu.sales.entity.GoodsClass; import com.mrxu.sales.entity.HisDrug; import com.mrxu.sales.entity.Supplier; import com.mrxu.sales.export.GoodsExport; import com.mrxu.sales.query.GoodsDto; import com.mrxu.sales.service.GoodsClassService; import com.mrxu.sales.service.GoodsService; import com.mrxu.sales.service.HisDrugService; import com.mrxu.sales.service.SupplierService; import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.math.BigDecimal; import java.util.List; @Api(tags = "商品管理") @Controller @RequestMapping("/sales/goods") @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class GoodsController extends AdminBaseController { private final GoodsClassService classService; private final SupplierService supplierService; private final GoodsService goodsService; private final HisDrugService hisDrugService; @RequiresPermissions("sales:goods:read") @RequestMapping("index.html") public String index(Model model) { List supplierList = supplierService.list(getTenantId()); model.addAttribute("supplierJson", JSON.toJSONString(supplierList)); model.addAttribute("supplierList",supplierList); return "sales/goods.html"; } @RequiresPermissions("sales:goods:read") @ResponseBody @RequestMapping("/page.json") public LayuiPage page(GoodsDto queryDto) { PageResult rs = goodsService.page(getTenantId(),queryDto); return renderLayuiPage(rs); } @RequiresPermissions("sales:goods:read") @ResponseBody @RequestMapping("/export.json") public void export(HttpServletResponse response, GoodsDto queryDto) { queryDto.setPageSize(MrxuConst.MAX_PAGE_SIZE); export(response,"药品", GoodsExport.class,goodsService.export(getTenantId(),queryDto)); } @RequiresPermissions("sales:goods:read") @ResponseBody @RequestMapping("/classList.json") public ResponseObj> classList() { return success(classService.list(getTenantId(),null)); } @RequiresPermissions("sales:goods:read") @ResponseBody @RequestMapping("/getById.json") public ResponseObj getById(Integer id) { return success(goodsService.getById(getTenantId(),id)); } @RequiresPermissions("sales:goods:update") @ResponseBody @RequestMapping("/save.json") public ResponseObj save(@Valid @RequestBody Goods bean) { if(bean.getStatus() == null) { bean.setStatus(MrxuConst.disable); } if(bean.getSellOut() == null) { bean.setSellOut(MrxuConst.disable); } return success(goodsService.saveOrUpdate(getTenantId(),bean,getUsername())); } @RequiresPermissions("sales:goods:update") @ResponseBody @RequestMapping("/updateStatus.json") public ResponseObj updateStatus(Integer id, Integer status) { Goods bean = new Goods(); bean.setId(id); bean.setStatus(status); return success(goodsService.saveOrUpdate(getTenantId(),bean,getUsername())); } @RequiresPermissions("sales:goods:remove") @ResponseBody @RequestMapping("/remove.json") public ResponseObj remove(Integer id) { return success(goodsService.remove(getTenantId(),id)); } @RequiresPermissions("sales:goods:update") @ResponseBody @RequestMapping("/classSave.json") public ResponseObj classSave(@Valid @RequestBody GoodsClass bean) { if(bean.getStatus() == null) { bean.setStatus(MrxuConst.disable); } MrxuAssert.isFalse(bean.getParentId().equals(bean.getId()),"父节点不能是自己"); GoodsClass exist = classService.getByKey(getTenantId(),"name",bean.getName()); MrxuAssert.isTrue(exist == null || exist.getId().equals(bean.getId()), "【"+bean.getName()+"】已存在"); return success(classService.saveOrUpdate(getTenantId(),bean,getUsername())); } @RequiresPermissions("sales:goods:remove") @ResponseBody @RequestMapping("/removeClass.json") public ResponseObj removeClass(Integer id) { return success(classService.remove(getTenantId(),id)); } @RequiresPermissions("sales:goods:update") @ResponseBody @RequestMapping("/downloadTemplate.json") public void downloadTemplate(HttpServletResponse response) { downloadFile(response,"药品导入模版.xlsx"); } @RequiresPermissions("sales:goods:update") @ResponseBody @RequestMapping("/importGoods.json") public ResponseObj importGoods(@RequestParam("file") MultipartFile file) { goodsService.importGoods(getTenantId(),file,getUsername()); return success(); } @RequiresPermissions("sales:goods:update") @ResponseBody @RequestMapping("/getSystemDrug.json") public ResponseObj getSystemDrug(String barcode) { return success(hisDrugService.getByBarcode(barcode)); } @RequiresPermissions("sales:goods:update") @ResponseBody @RequestMapping("/batchSet.json") public ResponseObj batchSet(BigDecimal minStock,BigDecimal maxStock) { goodsService.batchSet(getTenantId(),minStock,maxStock); return success(); } @RequiresPermissions("sales:goods:update") @ResponseBody @RequestMapping("/stocktaking.json") public ResponseObj stocktaking(Integer id,BigDecimal newStock) { goodsService.stocktaking(getTenantId(),id,newStock,getUsername()); return success(); } @RequiresPermissions("sales:goods:remove") @ResponseBody @RequestMapping("/updateSupperName.json") public ResponseObj temp() { List list = goodsService.list(); for(Goods goods : list) { goods.setSupplierName(supplierService.getNamesByIds(goods.getTenantId(),goods.getSupplierId())); goodsService.updateById(goods); } return success(); } }