package com.wms_admin.server.controller; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.wms_admin.server.entity.Product; import com.wms_admin.server.service.ProductService; import com.wms_admin.utils.AddProductMessageVo; import com.wms_admin.utils.RedisUtil; import com.wms_admin.utils.Result; import com.wms_admin.utils.StyleUtils; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 前端控制器 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2023-05-24 */ @Slf4j @Api(tags = "入库操作") @RestController @RequestMapping("/product") public class ProductController { @Autowired private ProductService service; @ApiOperation(value = "扫码入库添加接口:swagger json格式可以测试") @PostMapping("/add") public Result> AddProductMessage(@RequestBody AddProductMessageVo map){ for (String i : map.getCode()){ Object andDelete = RedisUtil.getAndDelete(i); Product product = JSONObject.parseObject(JSONObject.toJSONString(andDelete), Product.class); product.setAddPerson(map.getAddPerson()); product.setId(i); service.AddProductMessage(product); } return Result.success("添加成功"); } @ApiOperation(value = "条码信息缓存:不与数据库关联所以需要传入产品名称与规格型号,不能是ID") @ApiImplicitParams(value = { @ApiImplicitParam(name = "productName", value = "产品名称", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "productModel", value = "规格型号", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "unit", value = "单位", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "incomingQuantity", value = "入库数量", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "productCode", value = "产品编码", dataTypeClass = String.class, required = true) }) @PostMapping("/cache") public Result AddProductCache(String productName, String productModel, String unit, String incomingQuantity, String productCode){ Map map = new HashMap<>(); map.put("productName", productName); map.put("productModel", productModel); map.put("unit", unit); map.put("incomingQuantity", incomingQuantity); map.put("productCode", productCode); String idStr = IdWorker.getIdStr(); // 设置缓存七天后过期 boolean set = RedisUtil.set(idStr, map, 168); if (set){ return Result.success(idStr); } else { return Result.fail("条码生成失败,请重新尝试!"); } } @ApiOperation(value = "根据条码查询缓存信息") @ApiImplicitParams(value = { @ApiImplicitParam(name = "code", value = "产品编码", dataTypeClass = String.class, required = true) }) @GetMapping("/code_select") public Result> AddProductCodeSelect(String code){ Object o = RedisUtil.get(code); if (!ObjectUtils.isEmpty(o)){ Map map = JSONObject.parseObject(JSONObject.toJSONString(o)); return Result.success(map); } else { return Result.fail("条形码已过期,请重新打印!"); } } @ApiImplicitParams(value = { @ApiImplicitParam(name = "startTime", value = "开始时间", dataTypeClass = String.class, required = false), @ApiImplicitParam(name = "endTime", value = "结束时间", dataTypeClass = String.class, required = false), @ApiImplicitParam(name = "productModel", value = "型号", dataTypeClass = String.class, required = false), @ApiImplicitParam(name = "pageNo", value = "起始页", dataTypeClass = Integer.class, required = true), @ApiImplicitParam(name = "pageSize", value = "页总数", dataTypeClass = Integer.class, required = true) }) @ApiOperation(value = "分页查询接口") @GetMapping("/list") public Result> ListProductMessage(String startTime, String endTime, String productModel, Integer pageNo, Integer pageSize) { IPage productIPage = service.ListProductMessage(startTime, endTime, productModel, new Page(pageNo, pageSize)); HashMap map = new HashMap<>(); map.put("row", productIPage.getRecords()); map.put("total", productIPage.getTotal()); return Result.success(map); } @ApiOperation(value = "入库Excel导出") @GetMapping("/excel") @ApiImplicitParams(value = { @ApiImplicitParam(name = "startTime",value = "开始时间", dataTypeClass = String.class,required = false), @ApiImplicitParam(name = "endTime",value = "结束时间", dataTypeClass = String.class,required = false), @ApiImplicitParam(name = "productModel",value = "设备型号", dataTypeClass = String.class,required = false) }) public void ExcelDerive(String startTime, String endTime, String productModel, HttpServletResponse response) throws IOException { List map = service.ExcelDerive(startTime, endTime, productModel); // 设置单元格样式 HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(StyleUtils.getHeadStyle(), StyleUtils.getContentStyle()); // 保存到第一个sheet中 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("requestType","excel"); response.setHeader("Access-Control-Expose-Headers", "requestType"); EasyExcel .write(response.getOutputStream(), Product.class) .sheet() .needHead(true) .registerWriteHandler(horizontalCellStyleStrategy) .doWrite(map); } }