Browse Source

库存调整

master
wangpengfei 8 months ago
parent
commit
59784c6815
  1. 46
      src/main/java/com/yxt/warehouse/apiadmin/InventoryAdjustmentDetailRest.java
  2. 58
      src/main/java/com/yxt/warehouse/apiadmin/InventoryAdjustmentRest.java
  3. 7
      src/main/java/com/yxt/warehouse/apiadmin/WarehouseInventoryRest.java
  4. 5
      src/main/java/com/yxt/warehouse/apiadmin/WarehouseRackRest.java
  5. 22
      src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustment.java
  6. 57
      src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentAllVo.java
  7. 34
      src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentDto.java
  8. 28
      src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentMapper.java
  9. 46
      src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentMapper.xml
  10. 30
      src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentQuery.java
  11. 149
      src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentService.java
  12. 40
      src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentVo.java
  13. 25
      src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetail.java
  14. 34
      src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailDto.java
  15. 29
      src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailMapper.java
  16. 43
      src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailMapper.xml
  17. 30
      src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailQuery.java
  18. 125
      src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailService.java
  19. 42
      src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailVo.java
  20. 1
      src/main/java/com/yxt/warehouse/biz/warehouseinventory/WarehouseInventoryMapper.java
  21. 23
      src/main/java/com/yxt/warehouse/biz/warehouseinventory/WarehouseInventoryMapper.xml
  22. 15
      src/main/java/com/yxt/warehouse/biz/warehouseinventory/WarehouseInventoryService.java
  23. 1
      src/main/java/com/yxt/warehouse/biz/warehouseinventory/WarehouseInventoryVo.java
  24. 1
      src/main/java/com/yxt/warehouse/biz/warehouserack/WarehouseRackMapper.java
  25. 11
      src/main/java/com/yxt/warehouse/biz/warehouserack/WarehouseRackMapper.xml
  26. 6
      src/main/java/com/yxt/warehouse/biz/warehouserack/WarehouseRackService.java
  27. 170
      src/main/java/com/yxt/warehouse/utils/ExcelUtil.java

46
src/main/java/com/yxt/warehouse/apiadmin/InventoryAdjustmentDetailRest.java

@ -0,0 +1,46 @@
package com.yxt.warehouse.apiadmin;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailDto;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailQuery;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailService;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailVo;
import com.yxt.warehouse.utils.OrgPathQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author wangpengfei
* @date 2024/2/28 8:53
*/
@Api(tags = "库存调整明细")
@RestController
@RequestMapping("/apiadmin/inventoryadjustmentdetail")
public class InventoryAdjustmentDetailRest {
@Autowired
InventoryAdjustmentDetailService inventoryAdjustmentDetailService;
@ApiOperation("分页列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<InventoryAdjustmentDetailVo>> listPage(@RequestBody PagerQuery<InventoryAdjustmentDetailQuery> pq) {
return inventoryAdjustmentDetailService.listPage(pq);
}
// @ApiOperation("保存修改")
// @PostMapping("/saveOrUpdate")
// public ResultBean<String> saveOrUpdate(@RequestBody InventoryAdjustmentDetailDto dto) {
// return inventoryAdjustmentDetailService.saveOrUpdate(dto);
// }
}

58
src/main/java/com/yxt/warehouse/apiadmin/InventoryAdjustmentRest.java

@ -0,0 +1,58 @@
package com.yxt.warehouse.apiadmin;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.warehouse.biz.inventoryadjustment.*;
import com.yxt.warehouse.utils.OrgPathQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/2/28 8:53
*/
@Api(tags = "库存调整")
@RestController
@RequestMapping("/apiadmin/inventoryadjustment")
public class InventoryAdjustmentRest {
@Autowired
InventoryAdjustmentService inventoryAdjustmentService;
@ApiOperation("分页列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<InventoryAdjustmentVo>> listPage(@RequestBody PagerQuery<InventoryAdjustmentQuery> pq) {
return inventoryAdjustmentService.listPage(pq);
}
@ApiOperation("查询所有的库区")
@PostMapping("/listAll")
public ResultBean<InventoryAdjustmentVo> listAll(@RequestBody OrgPathQuery query) {
return inventoryAdjustmentService.getAllType( query);
}
@ApiOperation("保存修改")
@PostMapping("/saveOrUpdate")
public ResultBean<String> saveOrUpdate(@RequestBody InventoryAdjustmentDto dto) {
return inventoryAdjustmentService.saveOrUpdate(dto);
}
@ApiOperation("初始化")
@GetMapping("/initialization/{sid}")
public ResultBean<InventoryAdjustmentVo> initialization(@PathVariable("sid") String sid) {
return inventoryAdjustmentService.initialization(sid);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids){
ResultBean rb = ResultBean.fireFail();
inventoryAdjustmentService.delAll(sids);
return rb.success();
}
}

7
src/main/java/com/yxt/warehouse/apiadmin/WarehouseInventoryRest.java

@ -49,13 +49,18 @@ public class WarehouseInventoryRest {
public ResultBean<PagerVo<WarehouseInventoryVo>> locationListPage(@RequestBody PagerQuery<WarehouseInventoryQuery> pq) {
return WarehouseInventoryService.locationListPage(pq);
}
@ApiOperation("库位预警分页列表")
@PostMapping("/areaWarningListPage")
public ResultBean<PagerVo<WarehouseInventoryVo>> areaWarningListPage(@RequestBody PagerQuery<WarehouseInventoryQuery> pq) {
return WarehouseInventoryService.areaWarningListPage(pq);
}
@ApiOperation("根据仓库查询库存详情")
@PostMapping("/selInventoryByWareSid")
public ResultBean<PagerVo<WarehouseInventoryVo>> selInventoryByWareSid(@RequestBody PagerQuery<WarehouseInventoryQuery> pq) {
return WarehouseInventoryService.selInventoryByWareSid(pq);
}
@ApiOperation("查询库位商品数量")
@PostMapping("/getRackCountBySid")
ResultBean getRackCountBySid(@RequestBody WarehouseInventoryRackCountQuery query) {

5
src/main/java/com/yxt/warehouse/apiadmin/WarehouseRackRest.java

@ -49,6 +49,11 @@ public class WarehouseRackRest {
public ResultBean<WarehouseRackVo> initialization(@PathVariable("sid") String sid) {
return wmsWarehouseRackService.initialization(sid);
}
@ApiOperation("根据code查询库位")
@GetMapping("/selRackByCode/{code}")
public ResultBean<WarehouseRackVo> selRackByCode(@PathVariable("code") String code) {
return wmsWarehouseRackService.selRackByCode(code);
}
@ApiOperation("删除")
@DeleteMapping("/delete/{sid}")

22
src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustment.java

@ -0,0 +1,22 @@
package com.yxt.warehouse.biz.inventoryadjustment;
import com.yxt.common.core.domain.BaseEntity;
import lombok.Data;
/**
* @author wangpengfei
* @date 2024/2/28 8:38
*/
@Data
public class InventoryAdjustment extends BaseEntity {
private String type;//库位名称
private String billNo;//库位编码
private String warehouseSid;//仓库sid
private String warehouseName;//库位容量
private String count;//计量单位
private String operator;//货区类型
private String operatorSid;
private String useOrgSid;
private String createOrgSid;
}

57
src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentAllVo.java

@ -0,0 +1,57 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.warehouse.biz.inventoryadjustment;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: yxt-wms(仓库) <br/>
* File: WmsWarehouseAreaVo.java <br/>
* Class: com.yxt.wms.api.wmswarehousearea.WmsWarehouseAreaVo <br/>
* Description: 库区 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-04-09 14:35:56 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "库区 视图数据详情", description = "库区 视图数据详情")
public class InventoryAdjustmentAllVo implements Vo {
private String sid;
@ApiModelProperty("库位名称")
private String areaName;
@ApiModelProperty("库位编码")
private String areaCode;
}

34
src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentDto.java

@ -0,0 +1,34 @@
package com.yxt.warehouse.biz.inventoryadjustment;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.dto.Dto;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailDto;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/2/26 13:38
*/
@Data
public class InventoryAdjustmentDto implements Dto {
private String id;
private String sid;
private String createTime;
private String remarks;
private String isEnable;
private String type;//库位名称
private String billNo;//库位编码
private String warehouseSid;//仓库sid
private String warehouseName;//库位容量
private String operator;//货区类型
private String operatorSid;
private String useOrgSid;
private String createOrgSid;//创建组织sid
private String userSid;
private String orgPath;
private List<InventoryAdjustmentDetailDto> list=new ArrayList<>();
}

28
src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentMapper.java

@ -0,0 +1,28 @@
package com.yxt.warehouse.biz.inventoryadjustment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/2/26 13:40
*/
@Mapper
public interface InventoryAdjustmentMapper extends BaseMapper<InventoryAdjustment> {
IPage<InventoryAdjustmentVo> listPage(IPage<InventoryAdjustment> page, @Param(Constants.WRAPPER) QueryWrapper<InventoryAdjustment> qw);
InventoryAdjustmentVo initialization (@Param("sid") String sid);
int deleteByBillSid(List<String> list);
List<InventoryAdjustmentVo> listAll(@Param("orgPath")String orgPath);
String selectNum(String billNo);
}

46
src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentMapper.xml

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.warehouse.biz.inventoryadjustment.InventoryAdjustmentMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="listPage" resultType="com.yxt.warehouse.biz.inventoryadjustment.InventoryAdjustmentVo">
select
a.*
from inventory_adjustment a
LEFT JOIN ss_user.sys_organization as s ON a.useOrgSid = s.sid
<where>
${ew.sqlSegment}
</where>
</select>
<select id="listAll" resultType="com.yxt.warehouse.biz.warehousearea.WarehouseAreaVo">
select
*
from warehouse_area a
LEFT JOIN ss_user.sys_organization as s ON a.useOrgSid = s.sid
<where>
s.orgSidPath like concat('%',#{orgPath},'%') and a.isDelete !='1' and a.isEnable ='1'
</where>
</select>
<select id="initialization" resultType="com.yxt.warehouse.biz.inventoryadjustment.InventoryAdjustmentVo">
select
a.*
from inventory_adjustment a
where a.sid =#{sid}
</select>
<update id="deleteByBillSid">
delete inventory_adjustment
where sid in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<select id="selectNum" resultType="java.lang.String">
select RIGHT (billNo, 4)
from inventory_adjustment
where billNo LIKE concat(#{billNo}, '%')
order by billNo desc
limit 1
</select>
</mapper>

30
src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentQuery.java

@ -0,0 +1,30 @@
package com.yxt.warehouse.biz.inventoryadjustment;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wangpengfei
* @date 2024/2/26 13:37
*/
@Data
public class InventoryAdjustmentQuery implements Query {
private String endTime;//结束
private String startTime;//开始
private String billNo;//单据
private String goodsSkuSid;//商品
private String type;//类型
private String operator;//操作员
private String orgLevelKey;//
private int index;//下标
@ApiModelProperty("菜单路由")
private String menuUrl;
@ApiModelProperty("组织全路径sid")
private String orgPath;
@ApiModelProperty("用户sid")
private String userSid;
}

149
src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentService.java

@ -0,0 +1,149 @@
package com.yxt.warehouse.biz.inventoryadjustment;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetail;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailDto;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailService;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailVo;
import com.yxt.warehouse.biz.warehouseinfo.WarehouseInfoVo;
import com.yxt.warehouse.utils.ExcelUtil;
import com.yxt.warehouse.utils.OrgPathQuery;
import com.yxt.warehouse.utils.Rule;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author wangpengfei
* @date 2024/2/26 13:40
*/
@Service
public class InventoryAdjustmentService extends MybatisBaseService<InventoryAdjustmentMapper, InventoryAdjustment> {
@Autowired
InventoryAdjustmentDetailService inventoryAdjustmentDetailService;
public ResultBean<PagerVo<InventoryAdjustmentVo>> listPage(PagerQuery<InventoryAdjustmentQuery> pq) {
ResultBean rb = ResultBean.fireFail();
InventoryAdjustmentQuery query = pq.getParams();
QueryWrapper<InventoryAdjustment> qw = new QueryWrapper<>();
// if (StringUtils.isNotBlank(query.getOrgLevelKey())) {
// //数据权限ID(1全部、2本部门及子部门、3本部门、4个人)
// String orgLevelKey=query.getOrgLevelKey();
// String orgSidPath=query.getOrgPath();
// int index=query.getIndex();
// if ("1".equals(orgLevelKey)) {
// orgSidPath = orgSidPath.substring(0, index);
// qw.like("s.orgSidPath", orgSidPath);
// } else if ("2".equals(orgLevelKey)) {
// orgSidPath = orgSidPath.substring(0, index);
// qw.like("s.orgSidPath", orgSidPath);
// } else if ("3".equals(orgLevelKey)) {
// orgSidPath = orgSidPath.substring(0, index);
// qw.apply("s.orgSidPath like('"+orgSidPath+"')");
// } else if ("4".equals(orgLevelKey)) {
// qw.eq("a.createBySid", query.getUserSid());
// } else {
// PagerVo<WarehouseInfoVo> p = new PagerVo<>();
// return rb.success().setData(p);
// }
// } else {
// PagerVo<WarehouseInfoVo> p = new PagerVo<>();
// return rb.success().setData(p);
// }
qw.apply(StringUtils.isNotBlank(query.getStartTime()), "date_format (a.createTime,'%Y-%m-%d') >= date_format('" + query.getStartTime() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(query.getEndTime()), "date_format (a.createTime,'%Y-%m-%d') <= date_format('" + query.getEndTime() + "','%Y-%m-%d')"
);
if (StringUtils.isNotBlank(query.getBillNo())) {
qw.like("a.areaName", query.getBillNo());
}
if (StringUtils.isNotBlank(query.getGoodsSkuSid())) {
qw.like("a.areaCode", query.getGoodsSkuSid());
}
if (StringUtils.isNotBlank(query.getType())) {
qw.eq("b.sid", query.getType());
}
if (StringUtils.isNotBlank(query.getOperator())) {
qw.eq("c.sid", query.getOperator());
}
qw.ne("a.isDelete", "1");
IPage<InventoryAdjustment> page = PagerUtil.queryToPage(pq);
IPage<InventoryAdjustmentVo> pagging = baseMapper.listPage(page, qw);
PagerVo<InventoryAdjustmentVo> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p);
}
public ResultBean<InventoryAdjustmentVo> getAllType(OrgPathQuery query) {
ResultBean rb = ResultBean.fireFail();
List<InventoryAdjustmentVo> pagging = baseMapper.listAll(query.getOrgPath());
return rb.success().setData(pagging);
}
public ResultBean<String> saveOrUpdate(InventoryAdjustmentDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = "";
if (StringUtils.isNotBlank(dto.getSid())) {
sid = dto.getSid();
InventoryAdjustment inventoryAdjustment = fetchBySid(dto.getSid());
BeanUtil.copyProperties(dto, inventoryAdjustment, "id", "sid");
inventoryAdjustment.setModifyTime(new Date());
baseMapper.updateById(inventoryAdjustment);
// dto.getList().stream().forEach(a->{
// a.setBillNo(inventoryAdjustment.getBillNo());
// a.setBillSid(inventoryAdjustment.getSid());
// a.setUserSid(dto.getUserSid());
// });
inventoryAdjustmentDetailService.saveOrUpdate(dto.getList());
} else {
InventoryAdjustment inventoryAdjustment = new InventoryAdjustment();
sid = inventoryAdjustment.getSid();
BeanUtil.copyProperties(dto, inventoryAdjustment, "id", "sid");
inventoryAdjustment.setCreateTime(new DateTime());
inventoryAdjustment.setCreateBySid(dto.getUserSid());
String billNo = "";
String date = DateUtil.format(DateUtil.date(), "yyyyMMdd");
billNo = "TK" + date;
String i = baseMapper.selectNum(billNo);
if (org.apache.commons.lang3.StringUtils.isNotBlank(i)) {
billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue());
} else {
billNo = Rule.getBillNo(billNo, 0);
}
inventoryAdjustment.setBillNo(billNo);
dto.getList().stream().forEach(a->{
a.setBillNo(inventoryAdjustment.getBillNo());
a.setBillSid(inventoryAdjustment.getSid());
a.setUserSid(dto.getUserSid());
});
inventoryAdjustmentDetailService.saveOrUpdate(dto.getList());
baseMapper.insert(inventoryAdjustment);
}
return rb.success().setMsg("成功");
}
public ResultBean<InventoryAdjustmentVo> initialization(String sid) {
ResultBean rb = ResultBean.fireFail();
InventoryAdjustmentVo vo = baseMapper.initialization(sid);
vo.setList(inventoryAdjustmentDetailService.selectDetailByBillSid(sid));
return rb.success().setData(vo);
}
public void delAll(String[] sids) {
int count = baseMapper.deleteByBillSid(Arrays.stream(sids).collect(Collectors.toList()));
inventoryAdjustmentDetailService.delAll(sids);
}
}

40
src/main/java/com/yxt/warehouse/biz/inventoryadjustment/InventoryAdjustmentVo.java

@ -0,0 +1,40 @@
package com.yxt.warehouse.biz.inventoryadjustment;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.vo.Vo;
import com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailVo;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/2/26 13:37
*/
@Data
public class InventoryAdjustmentVo implements Vo {
private String id;
private String sid;
private String lockVersion;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date modifyTime;
private String remarks;
private String isEnable;
private String state;
private String isDelete;
private String type;//库位名称
private String billNo;//库位编码
private String warehouseSid;//仓库sid
private String warehouseName;//库位容量
private String count;//计量单位
private String operator;//货区类型
private String operatorSid;
private String useOrgSid;
private String createOrgSid;
private List<InventoryAdjustmentDetailVo> list=new ArrayList<>();
}

25
src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetail.java

@ -0,0 +1,25 @@
package com.yxt.warehouse.biz.inventoryadjustmentdetail;
import com.yxt.common.core.domain.BaseEntity;
import lombok.Data;
/**
* @author wangpengfei
* @date 2024/2/28 8:38
*/
@Data
public class InventoryAdjustmentDetail extends BaseEntity {
private String billNo;//库位名称
private String billSid;//库位编码
private String warehouseAreaSid;
private String warehouseAreaName;
private String rackSid;
private String rackName;
private String rackCode;
private String goodsSpuSid;//仓库sid
private String goodsSpuName;//库位容量
private String goodsSkuSid;//计量单位
private String goodsSkuTitle;//货区类型
private String count;
}

34
src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailDto.java

@ -0,0 +1,34 @@
package com.yxt.warehouse.biz.inventoryadjustmentdetail;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.dto.Dto;
import lombok.Data;
import java.util.Date;
/**
* @author wangpengfei
* @date 2024/2/26 13:38
*/
@Data
public class InventoryAdjustmentDetailDto implements Dto {
private String id;
private String sid;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private String remarks;
private String isEnable;
private String billNo;//库位名称
private String billSid;//库位编码
private String warehouseAreaSid;
private String warehouseAreaName;
private String rackSid;
private String rackName;
private String rackCode;
private String goodsSpuSid;//仓库sid
private String goodsSpuName;//库位容量
private String goodsSkuSid;//计量单位
private String goodsSkuTitle;//货区类型
private String count;
private String userSid;
}

29
src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailMapper.java

@ -0,0 +1,29 @@
package com.yxt.warehouse.biz.inventoryadjustmentdetail;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.warehouse.biz.inventoryadjustment.InventoryAdjustmentAllVo;
import com.yxt.warehouse.biz.inventoryadjustment.InventoryAdjustmentVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/2/26 13:40
*/
@Mapper
public interface InventoryAdjustmentDetailMapper extends BaseMapper<InventoryAdjustmentDetail> {
IPage<InventoryAdjustmentDetailVo> listPage(IPage<InventoryAdjustmentDetail> page, @Param(Constants.WRAPPER) QueryWrapper<InventoryAdjustmentDetail> qw);
InventoryAdjustmentDetailVo initialization (@Param("sid") String sid);
int deleteByBillSid(List<String> list);
@Select("select * from inventory_adjustment_detail where billSid = #{billSid}")
List<InventoryAdjustmentDetailVo> selectDetailByBillSid(String qySid);
}

43
src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailMapper.xml

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="listPage" resultType="com.yxt.warehouse.biz.inventoryadjustmentdetail.InventoryAdjustmentDetailVo">
SELECT
a.*
FROM
inventory_adjustment_detail a
LEFT JOIN inventory_adjustment b ON b.sid = a.billSid
LEFT JOIN ss_user.sys_organization AS s ON b.useOrgSid = s.sid
<where>
${ew.sqlSegment}
</where>
GROUP BY
rackSid,goodsSkuSid
</select>
<select id="listAll" resultType="com.yxt.warehouse.biz.warehousearea.WarehouseAreaVo">
select
*
from warehouse_area a
LEFT JOIN ss_user.sys_organization as s ON a.useOrgSid = s.sid
<where>
s.orgSidPath like concat('%',#{orgPath},'%') and a.isDelete !='1' and a.isEnable ='1'
</where>
</select>
<select id="initialization" resultType="com.yxt.warehouse.biz.warehousearea.WarehouseAreaVo">
select
a.*
from inventory_adjustment a
left join warehouse_zone d on d.sid=a.zoneSid
where a.sid =#{sid}
</select>
<update id="deleteByBillSid">
delete inventory_adjustment_detail
where billSid in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</update>
</mapper>

30
src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailQuery.java

@ -0,0 +1,30 @@
package com.yxt.warehouse.biz.inventoryadjustmentdetail;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wangpengfei
* @date 2024/2/26 13:37
*/
@Data
public class InventoryAdjustmentDetailQuery implements Query {
private String end;//结束
private String start;//开始
private String warehouseSid;//单据
private String goodsSkuSid;//商品
private String typeSid;//类型
private String brandSid;//操作员
private String orgLevelKey;//
private int index;//下标
@ApiModelProperty("菜单路由")
private String menuUrl;
@ApiModelProperty("组织全路径sid")
private String orgPath;
@ApiModelProperty("用户sid")
private String userSid;
}

125
src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailService.java

@ -0,0 +1,125 @@
package com.yxt.warehouse.biz.inventoryadjustmentdetail;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.warehouse.biz.inventoryadjustment.InventoryAdjustmentAllVo;
import com.yxt.warehouse.biz.warehouseinfo.WarehouseInfoVo;
import com.yxt.warehouse.utils.OrgPathQuery;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author wangpengfei
* @date 2024/2/26 13:40
*/
@Service
public class InventoryAdjustmentDetailService extends MybatisBaseService<InventoryAdjustmentDetailMapper, InventoryAdjustmentDetail> {
public ResultBean<PagerVo<InventoryAdjustmentDetailVo>> listPage(PagerQuery<InventoryAdjustmentDetailQuery> pq) {
ResultBean rb = ResultBean.fireFail();
InventoryAdjustmentDetailQuery query = pq.getParams();
QueryWrapper<InventoryAdjustmentDetail> qw = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getOrgLevelKey())) {
//数据权限ID(1全部、2本部门及子部门、3本部门、4个人)
String orgLevelKey=query.getOrgLevelKey();
String orgSidPath=query.getOrgPath();
int index=query.getIndex();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, index);
qw.like("s.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, index);
qw.like("s.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, index);
qw.apply("s.orgSidPath like('"+orgSidPath+"')");
} else if ("4".equals(orgLevelKey)) {
qw.eq("a.createBySid", query.getUserSid());
} else {
PagerVo<WarehouseInfoVo> p = new PagerVo<>();
return rb.success().setData(p);
}
} else {
PagerVo<WarehouseInfoVo> p = new PagerVo<>();
return rb.success().setData(p);
}
qw.apply(StringUtils.isNotBlank(query.getStart()), "count >= " + query.getStart() ) .
apply(StringUtils.isNotBlank(query.getEnd()), "count<= " + query.getEnd()
);
if (StringUtils.isNotBlank(query.getBrandSid())) {
qw.like("a.areaName", query.getBrandSid());
}
if (StringUtils.isNotBlank(query.getWarehouseSid())) {
qw.like("a.areaCode", query.getWarehouseSid());
}
if (StringUtils.isNotBlank(query.getGoodsSkuSid())) {
qw.eq("b.sid", query.getGoodsSkuSid());
}
if (StringUtils.isNotBlank(query.getTypeSid())) {
qw.eq("c.sid", query.getTypeSid());
}
qw.ne("a.isDelete", "1");
IPage<InventoryAdjustmentDetail> page = PagerUtil.queryToPage(pq);
IPage<InventoryAdjustmentDetailVo> pagging = baseMapper.listPage(page, qw);
PagerVo<InventoryAdjustmentDetailVo> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p);
}
public ResultBean<String> saveOrUpdate(List<InventoryAdjustmentDetailDto> dtos) {
ResultBean rb = ResultBean.fireFail();
String sid = "";
baseMapper.delete(new QueryWrapper<InventoryAdjustmentDetail>().eq("billSid",dtos.get(0).getBillSid()));
for (InventoryAdjustmentDetailDto dto : dtos) {
InventoryAdjustmentDetail wmsWarehouseArea = new InventoryAdjustmentDetail();
sid = wmsWarehouseArea.getSid();
BeanUtil.copyProperties(dto, wmsWarehouseArea, "id", "sid");
wmsWarehouseArea.setCreateTime(new DateTime());
wmsWarehouseArea.setCreateBySid(dto.getUserSid());
baseMapper.insert(wmsWarehouseArea);
}
return rb.success().setMsg("成功");
}
public ResultBean<InventoryAdjustmentDetailVo> initialization(String sid) {
ResultBean rb = ResultBean.fireFail();
InventoryAdjustmentDetailVo vo = baseMapper.initialization(sid);
return rb.success().setData(vo);
}
public void delAll(String[] sids) {
int count = baseMapper.deleteByBillSid(Arrays.stream(sids).collect(Collectors.toList()));
}
public ResultBean updateIsEnable(String sid,String isEnable) {
ResultBean rb = ResultBean.fireFail();
InventoryAdjustmentDetail wmsWarehouseArea = fetchBySid(sid);
if (null != wmsWarehouseArea) {
wmsWarehouseArea.setIsEnable(Integer.parseInt(isEnable));
baseMapper.updateById(wmsWarehouseArea);
}
return rb.success().setMsg("成功");
}
public List<InventoryAdjustmentDetailVo> selectDetailByBillSid(String billSid) {
return baseMapper.selectDetailByBillSid(billSid);
}
}

42
src/main/java/com/yxt/warehouse/biz/inventoryadjustmentdetail/InventoryAdjustmentDetailVo.java

@ -0,0 +1,42 @@
package com.yxt.warehouse.biz.inventoryadjustmentdetail;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
import java.util.Date;
/**
* @author wangpengfei
* @date 2024/2/26 13:37
*/
@Data
public class InventoryAdjustmentDetailVo implements Vo {
private String id;
private String sid;
private String lockVersion;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date modifyTime;
private String remarks;
private String isEnable;
private String state;
private String isDelete;
private String billNo;//库位名称
private String billSid;//库位编码
private String warehouseAreaSid;
private String warehouseAreaName;
private String rackSid;
private String rackName;
private String rackCode;
private String goodsSpuSid;//商品
private String goodsSpuName;//
private String goodsSkuSid;//
private String goodsSkuTitle;//商品名
private String barCode;//条码
private String goodsSkuCode;//商品编码
private String goodsSkuOwnSpec;//商品规格
private String count;
}

1
src/main/java/com/yxt/warehouse/biz/warehouseinventory/WarehouseInventoryMapper.java

@ -20,6 +20,7 @@ public interface WarehouseInventoryMapper extends BaseMapper<WarehouseInventory>
IPage<WarehouseInventoryVo> listPage(IPage<WarehouseInventory> page, @Param(Constants.WRAPPER) QueryWrapper<WarehouseInventory> qw);
IPage<WarehouseInventoryVo> listPage1(IPage<WarehouseInventory> page, @Param(Constants.WRAPPER) QueryWrapper<WarehouseInventory> qw);
IPage<WarehouseInventoryVo> listPage2(IPage<WarehouseInventory> page, @Param(Constants.WRAPPER) QueryWrapper<WarehouseInventory> qw);
IPage<WarehouseInventoryVo> listPage3(IPage<WarehouseInventory> page, @Param(Constants.WRAPPER) QueryWrapper<WarehouseInventory> qw);
List<WarehouseInventoryVo> getListBySpuSid(@Param(Constants.WRAPPER) QueryWrapper<WarehouseInventory> qw,@Param("countStart") String countStart,@Param("countEnd") String countEnd);
List<WarehouseInventoryVo> getListBySpuSid1(@Param(Constants.WRAPPER) QueryWrapper<WarehouseInventory> qw,@Param("countStart") String countStart,@Param("countEnd") String countEnd);
List<WarehouseInventoryRackVo> getRackCountBySid(@Param("sid")String sid,@Param("orgSid") String orgSid);

23
src/main/java/com/yxt/warehouse/biz/warehouseinventory/WarehouseInventoryMapper.xml

@ -58,6 +58,29 @@
</where>
group by a.goodsSpuSid
</select>
<select id="listPage3" resultType="com.yxt.warehouse.biz.warehouseinventory.WarehouseInventoryVo">
select
a.goodsSpuName,
a.goodsSpuSid,
a.goodsSkuSid,
a.goodsSkuTitle,
a.goodsSkuCode,
a.goodsSkuOwnSpec,
a.unit,
d.areaName as warehouseAreaName,
d.sid as warehouseAreaSid,
b.rackCode as warehouseRackCode,
b.sid as warehouseRackSid,
b.rackName as warehouseRackName
from warehouse_inventory a
left join warehouse_rack b on b.sid =a.warehouseRackSid
LEFT JOIN ss_user.sys_organization as s ON a.useOrgSid = s.sid
left join warehouse_area d on d.sid =b.locationSid
LEFT JOIN warehouse_area_warning c ON c.warehouseAreaSid = b.locationSid
<where>
${ew.sqlSegment}
</where>
</select>
<select id="getListBySpuSid" resultType="com.yxt.warehouse.biz.warehouseinventory.WarehouseInventoryVo">
select
a.goodsID,

15
src/main/java/com/yxt/warehouse/biz/warehouseinventory/WarehouseInventoryService.java

@ -209,6 +209,21 @@ public class WarehouseInventoryService extends MybatisBaseService<WarehouseInven
PagerVo<WarehouseInventoryVo> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p);
}
public ResultBean<PagerVo<WarehouseInventoryVo>> selInventoryByWareSid(PagerQuery<WarehouseInventoryQuery> pq) {
ResultBean rb =new ResultBean().fail();
WarehouseInventoryQuery query = pq.getParams();
QueryWrapper<WarehouseInventory> qw = new QueryWrapper<>();
if(StringUtils.isBlank(query.getOrgLevelKey())){
PagerVo<WarehouseInventoryVo> p = new PagerVo<>();
return rb.success().setData(p);
}else{
qw = createQueryWrapper(pq);
}
IPage<WarehouseInventory> page = PagerUtil.queryToPage(pq);
IPage<WarehouseInventoryVo> pagging = baseMapper.listPage3(page, qw);
PagerVo<WarehouseInventoryVo> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p);
}
public ResultBean<String> saveInventory(WarehouseInventoryDto dto) {
ResultBean rb = ResultBean.fireFail();

1
src/main/java/com/yxt/warehouse/biz/warehouseinventory/WarehouseInventoryVo.java

@ -38,6 +38,7 @@ public class WarehouseInventoryVo implements Vo {
private String warehouseRackSid;
@ApiModelProperty("库位名称")
private String warehouseRackCode;
private String warehouseRackName;
@ApiModelProperty("现有库存")
private BigDecimal count=new BigDecimal(0);
@ApiModelProperty("分配库存")

1
src/main/java/com/yxt/warehouse/biz/warehouserack/WarehouseRackMapper.java

@ -19,6 +19,7 @@ import java.util.List;
public interface WarehouseRackMapper extends BaseMapper<WarehouseRack> {
IPage<WarehouseRackVo> listPage(IPage<WarehouseRack> page, @Param(Constants.WRAPPER) QueryWrapper<WarehouseRack> qw);
WarehouseRackVo initialization (@Param("sid") String sid);
WarehouseRackVo selRackByCode (@Param("code") String code);
int updateBySidIsDelete(List<String> list);
List<WarehouseRackVo> listAll(@Param("orgPath")String orgPath);

11
src/main/java/com/yxt/warehouse/biz/warehouserack/WarehouseRackMapper.xml

@ -34,6 +34,17 @@
left join warehouse_zone d on d.sid=a.zoneSid
where a.sid =#{sid}
</select>
<select id="selRackByCode" resultType="com.yxt.warehouse.biz.warehouserack.WarehouseRackVo">
select
a.*
from warehouse_rack a
left join warehouse_area b on b.sid =a.locationSid
left join warehouse_info c on c.sid = a.warehouseSid
left join warehouse_zone d on d.sid=a.zoneSid
<where>
a.isDelete !='1' and a.isEnable ='1' and a.rackCode=#{code}
</where>
</select>
<update id="updateBySidIsDelete">
UPDATE warehouse_rack
SET isDelete=1

6
src/main/java/com/yxt/warehouse/biz/warehouserack/WarehouseRackService.java

@ -114,7 +114,11 @@ public class WarehouseRackService extends MybatisBaseService<WarehouseRackMapper
return rb.success().setData(vo);
}
public ResultBean<WarehouseRackVo> selRackByCode(String code) {
ResultBean rb = ResultBean.fireFail();
WarehouseRackVo vo=baseMapper.selRackByCode(code);
return rb.success().setData(vo);
}
public ResultBean delete(String sid) {
ResultBean rb = ResultBean.fireFail();
WarehouseRack wmsWarehouseRack = fetchBySid(sid);

170
src/main/java/com/yxt/warehouse/utils/ExcelUtil.java

@ -0,0 +1,170 @@
package com.yxt.warehouse.utils;
//import org.apache.log4j.Logger;
import com.yxt.common.core.result.ResultBean;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import static org.apache.poi.ss.usermodel.CellType.NUMERIC;
import static org.apache.poi.ss.usermodel.CellType.STRING;
/**
* @author wangpengfei
* @date 2024/4/23 13:53
*/
public class ExcelUtil {
// private static Logger logger = Logger.getLogger(ExcelUtil.class);
private final static String xls = "xls";
private final static String xlsx = "xlsx";
/**
* 读入excel文件解析后返回
*
* @param file
* @throws IOException
*/
public static List<String[]> readExcel(MultipartFile file) throws IOException {
//检查文件
checkFile(file);
//获得Workbook工作薄对象
Workbook workbook = getWorkBook(file);
//创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回
List<String[]> list = new ArrayList<String[]>();
if (workbook != null) {
for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) {
//获得当前sheet工作表
Sheet sheet = workbook.getSheetAt(sheetNum);
if (sheet == null) {
continue;
}
//获得当前sheet的开始行
int firstRowNum = sheet.getFirstRowNum();
//获得当前sheet的结束行
int lastRowNum = sheet.getLastRowNum();
int arrLength = sheet.getRow(firstRowNum).getPhysicalNumberOfCells();
//循环除了第一行的所有行
for (int rowNum = firstRowNum + 1; rowNum <= lastRowNum; rowNum++) {
//获得当前行
Row row = sheet.getRow(rowNum);
if (row == null) {
continue;
}
//获得当前行的开始列
int firstCellNum = row.getFirstCellNum();
//获得当前行的列数
int lastCellNum = row.getPhysicalNumberOfCells();
String[] cells = new String[arrLength];
//循环当前行
for(int i =0 ;i<arrLength;i++){ Cell cell = row.getCell(i);cells[i] = getCellValue(cell); }
list.add(cells);
}
}
workbook.close();
}
return list;
}
/**
* 检查文件
*
* @param file
* @throws IOException
*/
public static void checkFile(MultipartFile file) throws IOException {
ResultBean rb=new ResultBean().fail();
//判断文件是否存在
if (null == file) {
throw new FileNotFoundException("文件不存在!");
}
//获得文件名
String fileName = file.getOriginalFilename();
//判断文件是否是excel文件
if (!fileName.endsWith(xls) && !fileName.endsWith(xlsx)) {
// logger.error(fileName + "不是excel文件");
throw new IOException(fileName + "不是excel文件");
}
}
/**
* 返回工作簿
*
* @param file
* @return
*/
public static Workbook getWorkBook(MultipartFile file) {
//获得文件名
String fileName = file.getOriginalFilename();
//创建Workbook工作薄对象,表示整个excel
Workbook workbook = null;
try {
//获取excel文件的io流
InputStream is = file.getInputStream();
//根据文件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象
if (fileName.endsWith(xls)) {
//2003
workbook = new HSSFWorkbook(is);
} else if (fileName.endsWith(xlsx)) {
//2007
workbook = new XSSFWorkbook(is);
}
} catch (IOException e) {
// logger.info(e.getMessage());
}
return workbook;
}
/**
* 处理单元格样式 获取数据
*
* @param cell
* @return
*/
public static String getCellValue(Cell cell) {
String cellValue = "";
if (cell == null) {
return cellValue;
}
//把数字当成String来读,避免出现1读成1.0的情况
if (cell.getCellType() == NUMERIC) {
cell.setCellType(STRING);
}
//判断数据的类型
switch (cell.getCellType()) {
case NUMERIC: //数字
cellValue = String.valueOf(cell.getNumericCellValue());
break;
case STRING: //字符串
cellValue = String.valueOf(cell.getStringCellValue());
break;
case BOOLEAN: //Boolean
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case FORMULA: //公式
cellValue = String.valueOf(cell.getCellFormula());
break;
case BLANK: //空值
cellValue = "";
break;
case ERROR: //故障
cellValue = "非法字符";
break;
default:
cellValue = "未知类型";
break;
}
return cellValue;
}
}
Loading…
Cancel
Save