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;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
*
|
* @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<Map<String, Object>> 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<String> AddProductCache(String productName, String productModel, String unit, String incomingQuantity, String productCode){
|
Map<String, Object> 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<Map<String, Object>> AddProductCodeSelect(String code){
|
Object o = RedisUtil.get(code);
|
if (!ObjectUtils.isEmpty(o)){
|
Map<String, Object> 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<Map<String, Object>> ListProductMessage(String startTime, String endTime, String productModel, Integer pageNo, Integer pageSize) {
|
IPage<Product> productIPage = service.ListProductMessage(startTime, endTime, productModel, new Page(pageNo, pageSize));
|
HashMap<String, Object> 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<Product> 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);
|
}
|
}
|