【admin】新增#仓库管理

dev
renfan 2024-07-30 10:59:47 +08:00
parent 7abdb0d1b3
commit 69c0760bf9
19 changed files with 461 additions and 3 deletions

View File

@ -76,7 +76,7 @@ public class SparePartController {
*/ */
@Log(title = "备件信息编辑") @Log(title = "备件信息编辑")
@PostMapping("/edit") @PostMapping("/edit")
public Object edit(@Validated(value = SparePartParam.update.class) @RequestBody SparePartParam sparePartParam) { public Object edit(@RequestBody SparePartParam sparePartParam) {
iSparePartService.edit(sparePartParam); iSparePartService.edit(sparePartParam);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -90,7 +90,7 @@ public class SparePartController {
*/ */
@Log(title = "备件信息删除") @Log(title = "备件信息删除")
@PostMapping("/del") @PostMapping("/del")
public Object del(@Validated(value = SparePartParam.delete.class) @RequestBody SparePartParam sparePartParam) { public Object del(@RequestBody SparePartParam sparePartParam) {
iSparePartService.del(sparePartParam.getIds()); iSparePartService.del(sparePartParam.getIds());
return AjaxResult.success(); return AjaxResult.success();
} }

View File

@ -0,0 +1,93 @@
package com.hcy.admin.controller.warehouse;
import com.alibaba.fastjson.JSONArray;
import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.warehouse.IWarehouseService;
import com.hcy.admin.validate.warehouse.WarehouseParam;
import com.hcy.admin.vo.warehouse.WarehouseDetailVo;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.validator.annotation.IDMust;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
*
*/
@RestController
@RequestMapping("api/warehouse")
public class WarehouseController {
@Resource
IWarehouseService iWarehouseService;
/**
*
*
* @author hcy
* @param params
* @return Object
*/
@GetMapping("/list")
public Object list(@RequestParam Map<String, String> params) {
JSONArray list = iWarehouseService.list(params);
return AjaxResult.success(list);
}
/**
*
*
* @author hcy
* @param id ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
WarehouseDetailVo detail = iWarehouseService.detail(id);
return AjaxResult.success(detail);
}
/**
*
*
* @author hcy
* @param warehouseParam
* @return Object
*/
@Log(title = "仓库管理新增")
@PostMapping("/add")
public Object add(@Validated(value = WarehouseParam.create.class) @RequestBody WarehouseParam warehouseParam) {
iWarehouseService.add(warehouseParam);
return AjaxResult.success();
}
/**
*
*
* @author hcy
* @param warehouseParam
* @return Object
*/
@Log(title = "仓库管理编辑")
@PostMapping("/edit")
public Object edit(@RequestBody WarehouseParam warehouseParam) {
iWarehouseService.edit(warehouseParam);
return AjaxResult.success();
}
/**
*
*
* @author hcy
* @param warehouseParam
* @return Object
*/
@Log(title = "仓库管理删除")
@PostMapping("/del")
public Object del(@RequestBody WarehouseParam warehouseParam) {
iWarehouseService.del(warehouseParam.getIds());
return AjaxResult.success();
}
}

View File

@ -108,6 +108,7 @@ public class SparePartServiceImpl implements ISparePartService {
model.setSpecificationsModel(sparePartParam.getSpecificationsModel()); model.setSpecificationsModel(sparePartParam.getSpecificationsModel());
model.setUnit(sparePartParam.getUnit()); model.setUnit(sparePartParam.getUnit());
model.setQuantity(sparePartParam.getQuantity()); model.setQuantity(sparePartParam.getQuantity());
model.setUnitPrice(sparePartParam.getUnitPrice());
model.setCreateTime(System.currentTimeMillis() / 1000); model.setCreateTime(System.currentTimeMillis() / 1000);
sparePartMapper.insert(model); sparePartMapper.insert(model);
} }
@ -135,6 +136,8 @@ public class SparePartServiceImpl implements ISparePartService {
model.setSpecificationsModel(sparePartParam.getSpecificationsModel()); model.setSpecificationsModel(sparePartParam.getSpecificationsModel());
model.setUnit(sparePartParam.getUnit()); model.setUnit(sparePartParam.getUnit());
model.setQuantity(sparePartParam.getQuantity()); model.setQuantity(sparePartParam.getQuantity());
model.setUnitPrice(sparePartParam.getUnitPrice());
model.setUpdateTime(System.currentTimeMillis() / 1000);//更新时间
sparePartMapper.updateById(model); sparePartMapper.updateById(model);
} }

View File

@ -0,0 +1,59 @@
package com.hcy.admin.service.warehouse;
import com.alibaba.fastjson.JSONArray;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.warehouse.WarehouseParam;
import com.hcy.admin.vo.warehouse.WarehouseListVo;
import com.hcy.admin.vo.warehouse.WarehouseDetailVo;
import com.hcy.common.core.PageResult;
import java.util.Map;
/**
*
*/
public interface IWarehouseService {
/**
*
*
* @author hcy
* @param params
* @return JSONArray
*/
JSONArray list(Map<String, String> params);
/**
*
*
* @author hcy
* @param id ID
* @return Warehouse
*/
WarehouseDetailVo detail(Integer id);
/**
*
*
* @author hcy
* @param warehouseParam
*/
void add(WarehouseParam warehouseParam);
/**
*
*
* @author hcy
* @param warehouseParam
*/
void edit(WarehouseParam warehouseParam);
/**
*
*
* @author hcy
* @param ids
*/
void del(Long[] ids);
}

View File

@ -0,0 +1,162 @@
package com.hcy.admin.service.warehouse.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.query.MPJQueryWrapper;
import com.hcy.admin.service.warehouse.IWarehouseService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.warehouse.WarehouseParam;
import com.hcy.admin.vo.system.SystemAuthDeptVo;
import com.hcy.admin.vo.warehouse.WarehouseListVo;
import com.hcy.admin.vo.warehouse.WarehouseDetailVo;
import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult;
import com.hcy.common.entity.sparePart.SparePart;
import com.hcy.common.entity.system.SystemAuthDept;
import com.hcy.common.entity.warehouse.Warehouse;
import com.hcy.common.mapper.warehouse.WarehouseMapper;
import com.hcy.common.utils.ArrayUtil;
import com.hcy.common.utils.TimeUtil;
import com.hcy.common.utils.UrlUtil;
import com.hcy.common.config.GlobalConfig;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.*;
/**
*
*/
@Service
public class WarehouseServiceImpl implements IWarehouseService {
@Resource
WarehouseMapper warehouseMapper;
/**
*
*
* @author hcy
* @param params
* @return JSONArray
*/
@Override
public JSONArray list(Map<String, String> params) {
QueryWrapper<Warehouse> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
warehouseMapper.setSearch(queryWrapper, params, new String[]{
"=:parentId@parent_id:long",
"like:warehouseName@warehouse_name:str",
"=:warehouseCoding@warehouse_coding:str",
"=:warehouseAddress@warehouse_address:str",
});
List<Warehouse> array = warehouseMapper.selectList(queryWrapper);
List<WarehouseDetailVo> lists = new LinkedList<>();
for (Warehouse warehouse : array) {
WarehouseDetailVo vo = new WarehouseDetailVo();
BeanUtils.copyProperties(warehouse, vo);
vo.setCreateTime(TimeUtil.timestampToDate(warehouse.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(warehouse.getUpdateTime()));
lists.add(vo);
}
JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(lists));
return ArrayUtil.listToTree(jsonArray, "id", "pid", "children");
}
/**
*
*
* @author hcy
* @param id
* @return Warehouse
*/
@Override
public WarehouseDetailVo detail(Integer id) {
Warehouse model = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
WarehouseDetailVo vo = new WarehouseDetailVo();
BeanUtils.copyProperties(model, vo);
return vo;
}
/**
*
*
* @author hcy
* @param warehouseParam
*/
@Override
public void add(WarehouseParam warehouseParam) {
Warehouse model = new Warehouse();
model.setPid(warehouseParam.getPid());
model.setWarehouseName(warehouseParam.getWarehouseName());
model.setWarehouseCoding(warehouseParam.getWarehouseCoding());
model.setWarehouseAddress(warehouseParam.getWarehouseAddress());
model.setCreateTime(System.currentTimeMillis() / 1000);
warehouseMapper.insert(model);
}
/**
*
*
* @author hcy
* @param warehouseParam
*/
@Override
public void edit(WarehouseParam warehouseParam) {
Warehouse model = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", warehouseParam.getId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setId(warehouseParam.getId());
model.setPid(warehouseParam.getPid());
model.setWarehouseName(warehouseParam.getWarehouseName());
model.setWarehouseCoding(warehouseParam.getWarehouseCoding());
model.setWarehouseAddress(warehouseParam.getWarehouseAddress());
model.setUpdateTime(System.currentTimeMillis() / 1000);
warehouseMapper.updateById(model);
}
/**
*
*
* @author hcy
* @param ids ID
*/
@Override
public void del(Long[] ids) {
List<Warehouse> modelList = warehouseMapper.selectList(
new QueryWrapper<Warehouse>()
.in("id", ids));
// GlobalConstant.NOT_DELETE 调用未删除常量
// GlobalConstant.DELETE 删除标识
for (Warehouse warehouse : modelList) {
warehouse.setIsDelete(GlobalConstant.DELETE);
warehouse.setDeleteTime(System.currentTimeMillis() / 1000);
warehouseMapper.updateById(warehouse);// 进行伪删除 根据id把is_delete修改成1
}
}
}

View File

@ -9,6 +9,7 @@ import org.hibernate.validator.constraints.Length;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
@ -52,5 +53,9 @@ public class SparePartParam implements Serializable {
@DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class}) @DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class})
private Long quantity; private Long quantity;
@NotNull(message = "unitPrice参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "unitPrice参数值不能少于0", groups = {create.class, update.class})
private BigDecimal unitPrice;
private List<Integer> ids; //备件id集合 private List<Integer> ids; //备件id集合
} }

View File

@ -0,0 +1,46 @@
package com.hcy.admin.validate.warehouse;
import com.hcy.common.validator.annotation.IDMust;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import lombok.Data;
import javax.validation.constraints.*;
import java.io.Serializable;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class WarehouseParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
@NotNull(message = "id参数缺失", groups = {update.class, delete.class})
private Long id;
@NotNull(message = "pid参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "pid参数值不能少于0", groups = {create.class, update.class})
private Long pid;
@NotNull(message = "warehouseName参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "warehouseName参数不能超出255个字符", groups = {create.class, update.class})
private String warehouseName;
@NotNull(message = "warehouseCoding参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "warehouseCoding参数不能超出255个字符", groups = {create.class, update.class})
private String warehouseCoding;
@NotNull(message = "warehouseAddress参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "warehouseAddress参数不能超出255个字符", groups = {create.class, update.class})
private String warehouseAddress;
private Long[] ids;
}

View File

@ -3,6 +3,7 @@ package com.hcy.admin.vo.sparePart;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
/** /**
* SparePartVo * SparePartVo
@ -19,5 +20,6 @@ public class SparePartDetailVo implements Serializable {
private String specificationsModel; // 规格型号 private String specificationsModel; // 规格型号
private String unit; // 单位 private String unit; // 单位
private Long quantity; // 库存数量 private Long quantity; // 库存数量
private BigDecimal unitPrice; // 单价
} }

View File

@ -3,6 +3,7 @@ package com.hcy.admin.vo.sparePart;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
/** /**
* SparePartVo * SparePartVo
@ -21,5 +22,5 @@ public class SparePartListVo implements Serializable {
private Long quantity; // 库存数量 private Long quantity; // 库存数量
private String createTime; // 创建时间 private String createTime; // 创建时间
private String updateTime; // 更新时间 private String updateTime; // 更新时间
private BigDecimal unitPrice; // 单价
} }

View File

@ -0,0 +1,23 @@
package com.hcy.admin.vo.warehouse;
import lombok.Data;
import java.io.Serializable;
/**
* WarehouseVo
*/
@Data
public class WarehouseDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private Long pid; // 上级仓库
private String warehouseName; // 仓库名称(唯一)
private String warehouseCoding; // 仓库编码
private String warehouseAddress; // 仓库地址
private String createTime; // 创建时间
private String updateTime; // 更新时间
}

View File

@ -0,0 +1,21 @@
package com.hcy.admin.vo.warehouse;
import lombok.Data;
import java.io.Serializable;
/**
* WarehouseVo
*/
@Data
public class WarehouseListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private Long pid; // 上级仓库
private String warehouseName; // 仓库名称(唯一)
private String warehouseCoding; // 仓库编码
private String warehouseAddress; // 仓库地址
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Date; import java.sql.Date;
/** /**
@ -23,6 +24,7 @@ public class SparePart implements Serializable {
private String specificationsModel; // 规格型号 private String specificationsModel; // 规格型号
private String unit; // 单位 private String unit; // 单位
private Long quantity; // 库存数量 private Long quantity; // 库存数量
private BigDecimal unitPrice; // 单价
private Integer isDelete; // 是否删除: [0=否, 1=是] private Integer isDelete; // 是否删除: [0=否, 1=是]
private Long createTime; // 创建时间 private Long createTime; // 创建时间
private Long updateTime; // 更新时间 private Long updateTime; // 更新时间

View File

@ -0,0 +1,28 @@
package com.hcy.common.entity.warehouse;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
/**
*
*/
@Data
public class Warehouse implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value="id", type= IdType.AUTO)
private Long id; // 主键id
private Long pid; // 上级仓库
private String warehouseName; // 仓库名称(唯一)
private String warehouseCoding; // 仓库编码
private String warehouseAddress; // 仓库地址
private Integer isDelete; // 是否删除: [0=否, 1=是]
private Long createTime; // 创建时间
private Long updateTime; // 更新时间
private Long deleteTime; // 删除时间
}

View File

@ -0,0 +1,13 @@
package com.hcy.common.mapper.warehouse;
import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.entity.warehouse.Warehouse;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*/
@Mapper
public interface WarehouseMapper extends IBaseMapper<Warehouse> {
}