27 changed files with 1076 additions and 2 deletions
@ -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);
|
||||
|
// }
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -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(); |
||||
|
} |
||||
|
} |
@ -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; |
||||
|
} |
@ -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; |
||||
|
|
||||
|
} |
@ -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<>(); |
||||
|
} |
@ -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); |
||||
|
} |
@ -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> |
@ -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; |
||||
|
|
||||
|
} |
@ -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); |
||||
|
} |
||||
|
|
||||
|
} |
@ -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<>(); |
||||
|
|
||||
|
} |
@ -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; |
||||
|
} |
@ -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; |
||||
|
} |
@ -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); |
||||
|
} |
@ -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> |
@ -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; |
||||
|
|
||||
|
} |
@ -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); |
||||
|
} |
||||
|
|
||||
|
} |
@ -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; |
||||
|
|
||||
|
} |
@ -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…
Reference in new issue