diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseRackRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseRackRest.java index a7ab4fb0f4..63775c838a 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseRackRest.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseRackRest.java @@ -3,10 +3,7 @@ package com.yxt.wms.apiadmin.base; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; -import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackDto; -import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackQuery; -import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackService; -import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackVo; +import com.yxt.wms.biz.base.wmswarehouserack.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -65,4 +62,10 @@ public class WmsWarehouseRackRest { public ResultBean updateIsEnable(@PathVariable("sid") String sid,@PathVariable("isEnable")String isEnable) { return wmsWarehouseRackService.updateIsEnable(sid,isEnable); } + + @ApiOperation("根据库位全码查仓库库区库位信息") + @GetMapping("/selHouseInfoByFullCode") + public ResultBean selHouseInfoByFullCode(@RequestParam("rackFullCode") String rackFullCode) { + return wmsWarehouseRackService.selHouseInfoByFullCode(rackFullCode); + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsGoodsTagRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsGoodsTagRest.java new file mode 100644 index 0000000000..5e988d0ef8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsGoodsTagRest.java @@ -0,0 +1,27 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTagService; +import com.yxt.wms.biz.inventory.wmsoutbill.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Api(tags = "商品标签表") +@RestController +@RequestMapping("/apiadmin/WmsGoodsTag") +public class WmsGoodsTagRest { + + @Autowired + private WmsGoodsTagService wmsWmsGoodsTagService; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java index 0c4527da51..43139c1e2b 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java @@ -7,8 +7,7 @@ import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillDto2; import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillPageVo; import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillQuery; import com.yxt.wms.biz.inventory.wmsshelfbill.*; -import com.yxt.wms.biz.inventory.wmsshelfbill.app.AppShelfBillListQuery; -import com.yxt.wms.biz.inventory.wmsshelfbill.app.AppShelfBillListVo; +import com.yxt.wms.biz.inventory.wmsshelfbill.app.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; @@ -75,12 +74,29 @@ public class WmsShelfBillRest { //---------------------------app--------------------------------- @ApiOperation("分页列表") - @PostMapping("/applistPage") + @PostMapping("/getShelvesList") public ResultBean> applistPage(@RequestBody PagerQuery pq) { ResultBean> rb = ResultBean.fireFail(); PagerVo pv = wmsShelfBillService.applistPage(pq); return rb.success().setData(pv); } + @ApiOperation("上架初始化") + @GetMapping("shelvesOperaInit/{sid}") + public ResultBean shelvesOperaInit(@PathVariable("sid") String sid) { + return wmsShelfBillService.shelvesOperaInit(sid); + } + + @ApiOperation("扫码") + @GetMapping("scan") + public ResultBean scan(@RequestParam(value = "shelvesId", required = false) String shelvesId,@RequestParam(value = "content") String content) { + return wmsShelfBillService.scan(shelvesId,content); + } + + @ApiOperation("上架保存") + @PostMapping("/shelvesSave") + public ResultBean shelvesSave(@RequestBody AppSaveBillRecordDto dto) { + return wmsShelfBillService.shelvesSave(dto); + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsHouseInfoVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsHouseInfoVo.java new file mode 100644 index 0000000000..ab00dbe8f9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsHouseInfoVo.java @@ -0,0 +1,20 @@ +package com.yxt.wms.biz.base.wmswarehouserack; + +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/5/30 11:29 + */ +@Data +public class WmsHouseInfoVo { + + private String warehouseSid;//仓库 + private String warehouseName; + private String wareAreaSid;//库区 + private String wareAreaName; + private String warehouseRackSid;//库位sid + private String warehouseRackCode; + private String warehouseRackName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRack.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRack.java index 1aca44ba12..4218d3674a 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRack.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRack.java @@ -23,4 +23,5 @@ public class WmsWarehouseRack extends BaseEntity { private String rackCode;//货架编码 private String warehouseSid;//仓库sid private String locationSid;//库位sid + private String rackFullCode;//库位全码(仓库编码-库区编码-库位编码) } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.java index f6c8c8b200..9de677c40a 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.java @@ -23,4 +23,6 @@ public interface WmsWarehouseRackMapper extends BaseMapper { WmsWarehouseRack checkForInsert(@Param("rackCode")String rackCode, @Param("locationSid")String locationSid); WmsWarehouseRack checkForUpdate(@Param("rackCode")String rackCode,@Param("locationSid") String locationSid, @Param("sid")String sid); + + WmsWarehouseRack selHouseInfoByFullCode(@Param("rackFullCode") String rackFullCode); } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml index 2635242661..3acefd0267 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml @@ -35,6 +35,9 @@ where rackCode =#{rackCode} and locationSid =#{locationSid} and isDelete=0 from wms_warehouse_rack where rackCode =#{rackCode} and locationSid =#{locationSid} and sid !=#{sid} and isDelete=0 + UPDATE wms_warehouse_rack SET isDelete=1 diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackService.java index fbc07a2a74..f6ea07c9a6 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackService.java @@ -11,7 +11,10 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseArea; +import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseAreaService; import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseAreaVo; +import com.yxt.wms.biz.base.wmswarehouseinfo.WmsWarehouseInfo; +import com.yxt.wms.biz.base.wmswarehouseinfo.WmsWarehouseInfoService; import com.yxt.wms.feign.portal.privilege.PrivilegeQuery; import com.yxt.wms.feign.portal.sysuser.SysUserFeign; import org.springframework.beans.factory.annotation.Autowired; @@ -31,6 +34,10 @@ import java.util.stream.Collectors; public class WmsWarehouseRackService extends MybatisBaseService { @Autowired private SysUserFeign sysUserFeign; + @Autowired + private WmsWarehouseInfoService wmsWarehouseInfoService; + @Autowired + private WmsWarehouseAreaService wmsWarehouseAreaService; public ResultBean> listPage(PagerQuery pq) { ResultBean rb = ResultBean.fireFail(); @@ -72,29 +79,30 @@ public class WmsWarehouseRackService extends MybatisBaseService p = new PagerVo<>(); return rb.success().setData(p); } - if(StringUtils.isNotBlank(query.getName())){ - qw.like("rackName",query.getName()); + if (StringUtils.isNotBlank(query.getName())) { + qw.like("rackName", query.getName()); } - if(StringUtils.isNotBlank(query.getCode())){ - qw.like("rackCode",query.getCode()); + if (StringUtils.isNotBlank(query.getCode())) { + qw.like("rackCode", query.getCode()); } - if(StringUtils.isNotBlank(query.getAreaTypeSid())){ - qw.eq("b.sid",query.getAreaTypeSid()); + if (StringUtils.isNotBlank(query.getAreaTypeSid())) { + qw.eq("b.sid", query.getAreaTypeSid()); } - if(StringUtils.isNotBlank(query.getWarehouseSid())){ - qw.eq("c.sid",query.getWarehouseSid()); + if (StringUtils.isNotBlank(query.getWarehouseSid())) { + qw.eq("c.sid", query.getWarehouseSid()); } - qw.ne("a.isDelete","1"); + qw.ne("a.isDelete", "1"); IPage page = PagerUtil.queryToPage(pq); IPage pagging = baseMapper.listPage(page, qw); PagerVo p = PagerUtil.pageToVo(pagging, null); List records = pagging.getRecords(); return rb.success().setData(p); } + public ResultBean getAllType() { ResultBean rb = ResultBean.fireFail(); - List pagging = baseMapper.selectList(new QueryWrapper().eq("isEnable",1) - .ne("isDelete","1")); + List pagging = baseMapper.selectList(new QueryWrapper().eq("isEnable", 1) + .ne("isDelete", "1")); return rb.success().setData(pagging); } @@ -103,16 +111,27 @@ public class WmsWarehouseRackService extends MybatisBaseService selHouseInfoByFullCode(String rackFullCode) { + ResultBean rb = ResultBean.fireFail(); + WmsHouseInfoVo info = new WmsHouseInfoVo(); + WmsWarehouseRack rack = baseMapper.selHouseInfoByFullCode(rackFullCode); + if (null != rack) { + info.setWarehouseRackSid(rack.getSid()); + info.setWarehouseRackName(rack.getRackName()); + info.setWarehouseRackCode(rack.getRackCode()); + WmsWarehouseInfo warehouseInfo = wmsWarehouseInfoService.fetchBySid(rack.getWarehouseSid()); + if (null != warehouseInfo) { + info.setWarehouseSid(warehouseInfo.getSid()); + info.setWarehouseName(warehouseInfo.getWarehouseName()); + } + WmsWarehouseArea wmsWarehouseArea = wmsWarehouseAreaService.fetchBySid(rack.getLocationSid()); + if (null != wmsWarehouseArea) { + info.setWareAreaSid(wmsWarehouseArea.getSid()); + info.setWareAreaName(wmsWarehouseArea.getAreaName()); + } + } else { + return rb; + } + return rb.success().setData(info); + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTag.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTag.java new file mode 100644 index 0000000000..efe66bd715 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTag.java @@ -0,0 +1,45 @@ +package com.yxt.wms.biz.inventory.wmsgoodstag; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Fan + * @description + * @date 2024/5/30 13:36 + */ +@Data +public class WmsGoodsTag extends BaseEntity { + @ApiModelProperty("单据sid(收货单sid)") + private String billSid; + @ApiModelProperty("单据明细sid") + private String billDetailSid; + @ApiModelProperty("批次号(入库日期+有效日期,如240320-241009)") + private String batchNumber; + @ApiModelProperty("商品ID") + private String goodsID; + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("数量") + private BigDecimal goodsCount; + @ApiModelProperty("标签图片地址") + private String tagPicUrl; + @ApiModelProperty("打印次数") + private Integer printCount; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.java new file mode 100644 index 0000000000..8d40b031d9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.java @@ -0,0 +1,17 @@ +package com.yxt.wms.biz.inventory.wmsgoodstag; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/11 + **/ +@Mapper +public interface WmsGoodsTagMapper extends BaseMapper { + + WmsGoodsTag selByBillSidAndGoodsID(@Param("billSid") String billSid, @Param("goodsID") String goodsID); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.xml new file mode 100644 index 0000000000..951d8d51ed --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java new file mode 100644 index 0000000000..e1ce482053 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java @@ -0,0 +1,19 @@ +package com.yxt.wms.biz.inventory.wmsgoodstag; + +import com.yxt.common.base.service.MybatisBaseService; + +import org.springframework.stereotype.Service; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/11 + **/ +@Service +public class WmsGoodsTagService extends MybatisBaseService { + + public WmsGoodsTag selByBillSidAndGoodsID(String billSid, String goodsID) { + return baseMapper.selByBillSidAndGoodsID(billSid,goodsID); + } + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java index b247222498..3b1ea42c55 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java @@ -205,33 +205,35 @@ public class WmsReceiptBillService extends MybatisBaseService vos = wmsAnsBillDetailService.selectByBillSid(dto.getSourceBillSid()); - if (!vos.isEmpty()) { - HashSet integers = new HashSet<>(); - for (WmsAnsListDetailsVo vo : vos) { - BigDecimal count = new BigDecimal("0"); - if (StringUtils.isNotBlank(vo.getWaitInCount())) { - count = new BigDecimal(vo.getWaitInCount()); + if (StringUtils.isNotBlank(dto.getSourceBillSid())) { + WmsAnsBill wmsAnsBill = wmsAnsBillService.fetchBySid(dto.getSourceBillSid()); + List vos = wmsAnsBillDetailService.selectByBillSid(dto.getSourceBillSid()); + if (!vos.isEmpty()) { + HashSet integers = new HashSet<>(); + for (WmsAnsListDetailsVo vo : vos) { + BigDecimal count = new BigDecimal("0"); + if (StringUtils.isNotBlank(vo.getWaitInCount())) { + count = new BigDecimal(vo.getWaitInCount()); + } + if (count.compareTo(BigDecimal.ZERO) <= 0) { + integers.add(2); + } else { + integers.add(1); + } } - if (count.compareTo(BigDecimal.ZERO) <= 0) { - integers.add(2); + if (integers.size() > 1) { + wmsAnsBill.setBillState(1); } else { - integers.add(1); - } - } - if (integers.size() > 1) { - wmsAnsBill.setBillState(1); - } else { - wmsAnsBill.setBillState(2); - for (Integer integer : integers) { - if (integer == 1) { - wmsAnsBill.setBillState(1); + wmsAnsBill.setBillState(2); + for (Integer integer : integers) { + if (integer == 1) { + wmsAnsBill.setBillState(1); + } } } } + wmsAnsBillService.updateById(wmsAnsBill); } - wmsAnsBillService.updateById(wmsAnsBill); } wmsReceiptBill.setBillState("0"); String applyCode = getApplyCode(dto.getCreateOrgSid()); @@ -276,33 +278,36 @@ public class WmsReceiptBillService extends MybatisBaseService vos = wmsAnsBillDetailService.selectByBillSid(dto.getSourceBillSid()); - if (!vos.isEmpty()) { - HashSet integers = new HashSet<>(); - for (WmsAnsListDetailsVo vo : vos) { - BigDecimal count = new BigDecimal("0"); - if (StringUtils.isNotBlank(vo.getWaitInCount())) { - count = new BigDecimal(vo.getWaitInCount()); + if (StringUtils.isNotBlank(dto.getSourceBillSid())) { + WmsAnsBill wmsAnsBill = wmsAnsBillService.fetchBySid(dto.getSourceBillSid()); + List vos = wmsAnsBillDetailService.selectByBillSid(dto.getSourceBillSid()); + if (!vos.isEmpty()) { + HashSet integers = new HashSet<>(); + for (WmsAnsListDetailsVo vo : vos) { + BigDecimal count = new BigDecimal("0"); + if (StringUtils.isNotBlank(vo.getWaitInCount())) { + count = new BigDecimal(vo.getWaitInCount()); + } + if (count.compareTo(BigDecimal.ZERO) <= 0) { + integers.add(2); + } else { + integers.add(1); + } } - if (count.compareTo(BigDecimal.ZERO) <= 0) { - integers.add(2); + if (integers.size() > 1) { + wmsAnsBill.setBillState(1); } else { - integers.add(1); - } - } - if (integers.size() > 1) { - wmsAnsBill.setBillState(1); - } else { - wmsAnsBill.setBillState(2); - for (Integer integer : integers) { - if (integer == 1) { - wmsAnsBill.setBillState(1); + wmsAnsBill.setBillState(2); + for (Integer integer : integers) { + if (integer == 1) { + wmsAnsBill.setBillState(1); + } } } } + wmsAnsBillService.updateById(wmsAnsBill); } - wmsAnsBillService.updateById(wmsAnsBill); + } baseMapper.updateById(wmsReceiptBill); } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java index 0ff728fba3..ea9df62351 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java @@ -10,7 +10,12 @@ 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.wms.biz.base.wmswarehouserack.WmsHouseInfoVo; +import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackService; import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBillVo; +import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsListDetailsVo; +import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTag; +import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTagService; import com.yxt.wms.biz.inventory.wmsinventory.WmsInventorySaveDto; import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService; import com.yxt.wms.biz.inventory.wmsinventoryrecord.WmsInventoryRecordDto; @@ -22,8 +27,7 @@ import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailDto2; import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailService; import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatch; import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchService; -import com.yxt.wms.biz.inventory.wmsshelfbill.app.AppShelfBillListQuery; -import com.yxt.wms.biz.inventory.wmsshelfbill.app.AppShelfBillListVo; +import com.yxt.wms.biz.inventory.wmsshelfbill.app.*; import com.yxt.wms.biz.inventory.wmsshelfbilldetail.*; import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo; import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign; @@ -38,13 +42,11 @@ import com.yxt.wms.utils.Rule; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; /** * @description: @@ -77,6 +79,11 @@ public class WmsShelfBillService extends MybatisBaseService listPage(PagerQuery pq) { WmsShelfBillQuery query = pq.getParams(); QueryWrapper qw = new QueryWrapper<>(); @@ -143,7 +150,7 @@ public class WmsShelfBillService extends MybatisBaseService qw = new QueryWrapper<>(); if (StringUtils.isNotBlank(query.getUserSid())) { - qw.eq("wsb.upShelfSid",query.getUserSid()); + qw.eq("wsb.upShelfSid", query.getUserSid()); } //ToDo:添加查询条件 if (StringUtils.isNotBlank(query.getName())) { @@ -420,9 +427,212 @@ public class WmsShelfBillService extends MybatisBaseService page = PagerUtil.queryToPage(pq); IPage pagging = baseMapper.applistPage(page, qw); + List records = pagging.getRecords(); + if (!records.isEmpty()) { + for (AppShelfBillListVo record : records) { + if (!record.getShelvesState().equals("完成")) { + record.setShelvesBtn(true); + } + if (!record.getShelvesState().equals("新建")) { + record.setRecordBtn(true); + } + } + } PagerVo p = PagerUtil.pageToVo(pagging, null); return p; } + + public ResultBean shelvesOperaInit(String sid) { + ResultBean rb = ResultBean.fireFail(); + AppShelInitVo vo = new AppShelInitVo(); + WmsShelfBill wmsShelfBill = fetchBySid(sid); + if (null != wmsShelfBill) { + vo.setShelvesId(wmsShelfBill.getBillNo()); + List details = wmsShelfBillDetailService.selectByMainSid(sid); + if (!details.isEmpty()) { + List goods = new ArrayList<>(); + for (WmsShelfBillDetail detail : details) { + AppShelInitVo.AppShelInitVoDetails voDetails = new AppShelInitVo.AppShelInitVoDetails(); + if (StringUtils.isNotBlank(detail.getGoodsSpuName())) { + voDetails.setName(detail.getGoodsSpuName()); + } + BigDecimal count = new BigDecimal("0"); + BigDecimal acCount = new BigDecimal("0"); + if (null != detail.getCount()) { + count = detail.getCount(); + } + if (null != detail.getActualCount()) { + acCount = detail.getActualCount(); + } + String c = String.valueOf(count.subtract(acCount).intValue()); + voDetails.setNumber(c); + if (!c.equals("0")) { + goods.add(voDetails); + } + } + vo.setGoods(goods); + } + } + return rb.success().setData(vo); + } + + public ResultBean scan(String shelvesId, String content) { + ResultBean rb = ResultBean.fireFail(); + AppScanVo vo = new AppScanVo(); + if (StringUtils.isNotBlank(shelvesId)) { + if (content.contains("#")) { + String[] split = content.split("#"); + String houseCode = split[0]; + ResultBean wmsHouseInfoVoResultBean = wmsWarehouseRackService.selHouseInfoByFullCode(houseCode); + if (wmsHouseInfoVoResultBean.getSuccess()) { + WmsHouseInfoVo houseInfoVo = wmsHouseInfoVoResultBean.getData(); + if (null != houseInfoVo) { + vo.setHouseCode(houseCode); + vo.setHouseName(houseInfoVo.getWareAreaName() + "-" + houseInfoVo.getWarehouseRackName()); + vo.setHouseAddress(houseInfoVo.getWarehouseRackCode()); + vo.setType(1); + } + } else { + return rb.setMsg("扫描库位码为空"); + } + } else { + vo.setType(0); + WmsShelfBill wmsShelfBill = fetchBySid(shelvesId); + String sourceBillSid = wmsShelfBill.getSourceBillSid(); + //判断该商品ID是否属于该上架单对应的收货单 + WmsGoodsTag wmsGoodsTag = wmsGoodsTagService.selByBillSidAndGoodsID(sourceBillSid, content); + if (null != wmsGoodsTag) { + vo.setGoodsID(wmsGoodsTag.getGoodsID()); + vo.setGoodsName(wmsGoodsTag.getGoodsSpuName()); + if (wmsGoodsTag.getState() == 1) { + return rb.setMsg("该商品已上架完成"); + } + //获取该商品编码,判断此上架单是否有对应的商品编码 + String goodsSkuCode = wmsGoodsTag.getGoodsSkuCode(); + WmsShelfBillDetail shelfBillGoods = wmsShelfBillDetailService.selByBillSidAndSkuCode(shelvesId, goodsSkuCode); + if (null == shelfBillGoods) { + return rb.setMsg("该商品不属于您的上架单"); + } + BigDecimal count = new BigDecimal("0"); + BigDecimal acCount = new BigDecimal("0"); + if (null != shelfBillGoods.getCount()) { + count = shelfBillGoods.getCount(); + } + if (null != shelfBillGoods.getActualCount()) { + acCount = shelfBillGoods.getActualCount(); + } + BigDecimal subtractCount = count.subtract(acCount); + if (subtractCount.compareTo(BigDecimal.ZERO) > 0) { + if (wmsGoodsTag.getGoodsCount().compareTo(new BigDecimal("1")) == 0) { + vo.setGoodsMax("1"); + } else { + vo.setGoodsMax(String.valueOf(subtractCount.intValue())); + } + } else { + return rb.setMsg("您的上架单中的该商品已经上架完成"); + } + } else { + return rb.setMsg("该商品不属于您的收货单"); + } + } + } else { + vo.setUrl(""); + } + return rb.success().setData(vo); + } + + @Transactional(rollbackFor = Exception.class) + public ResultBean shelvesSave(AppSaveBillRecordDto dto) { + ResultBean rb = ResultBean.fireFail(); + String shelvesId = dto.getShelvesSid(); + WmsShelfBill wmsShelfBill = fetchBySid(shelvesId); + String sourceBillSid = wmsShelfBill.getSourceBillSid(); + List goodsList = dto.getGoodsList(); + if (!goodsList.isEmpty()) { + Map map = new HashMap<>(); + for (AppSaveBillRecordDto.AppSaveBillRecordDetailsDto detailsDto : goodsList) { + BigDecimal decimal = map.get(detailsDto.getGoodsID()); + if (null != decimal) { + map.put(detailsDto.getGoodsID(), decimal.add(new BigDecimal(detailsDto.getCount()))); + } else { + map.put(detailsDto.getGoodsID(), new BigDecimal(detailsDto.getCount())); + } + } + for (AppSaveBillRecordDto.AppSaveBillRecordDetailsDto r : goodsList) { + String goodsID = r.getGoodsID(); + String houseCode = r.getHouseCode(); + if (StringUtils.isBlank(goodsID)) { + return rb.setMsg("请扫描商品码"); + } + if (StringUtils.isBlank(houseCode)) { + return rb.setMsg("请扫描库位码"); + } + WmsGoodsTag wmsGoodsTag = wmsGoodsTagService.selByBillSidAndGoodsID(sourceBillSid, goodsID); + String goodsSkuCode = wmsGoodsTag.getGoodsSkuCode(); + WmsShelfBillDetail shelfBillGoods = wmsShelfBillDetailService.selByBillSidAndSkuCode(shelvesId, goodsSkuCode); + BigDecimal actualCount = shelfBillGoods.getActualCount(); + BigDecimal subtract = shelfBillGoods.getCount().subtract(actualCount); + if (subtract.compareTo(map.get(goodsID)) < 0) { + return rb.setMsg("请勿超过商品上架最大数量"); + } + } + for (AppSaveBillRecordDto.AppSaveBillRecordDetailsDto r : goodsList) { + String count = r.getCount(); + String goodsID = r.getGoodsID(); + String houseCode = r.getHouseCode(); + WmsGoodsTag wmsGoodsTag = wmsGoodsTagService.selByBillSidAndGoodsID(sourceBillSid, goodsID); + String goodsSkuCode = wmsGoodsTag.getGoodsSkuCode(); + WmsShelfBillDetail shelfBillGoods = wmsShelfBillDetailService.selByBillSidAndSkuCode(shelvesId, goodsSkuCode); + BigDecimal actualCount = shelfBillGoods.getActualCount(); + BigDecimal add = actualCount.add(new BigDecimal(count)); + shelfBillGoods.setActualCount(add); + wmsShelfBillDetailService.updateById(shelfBillGoods); + if (wmsGoodsTag.getGoodsCount().compareTo(new BigDecimal("1")) == 0) { + wmsGoodsTag.setState(1); + wmsGoodsTagService.updateById(wmsGoodsTag); + } + } + List vos = wmsShelfBillDetailService.selectByMainSid(dto.getShelvesSid()); + if (!vos.isEmpty()) { + HashSet integers = new HashSet<>(); + for (WmsShelfBillDetail vo : vos) { + if (vo.getActualCount().compareTo(vo.getCount()) >= 0) { + integers.add(2); + } else { + integers.add(1); + } + } + if (integers.size() > 1) { + wmsShelfBill.setBillState(2); + wmsShelfBill.setBillStateValue("部分上架"); + } else { + wmsShelfBill.setBillState(1); + wmsShelfBill.setBillStateValue("已完成"); + for (Integer integer : integers) { + if (integer == 1) { + wmsShelfBill.setBillState(2); + wmsShelfBill.setBillStateValue("部分上架"); + } + } + } + } + baseMapper.updateById(wmsShelfBill); + for (AppSaveBillRecordDto.AppSaveBillRecordDetailsDto r : goodsList) { + String goodsID = r.getGoodsID(); + WmsGoodsTag wmsGoodsTag = wmsGoodsTagService.selByBillSidAndGoodsID(sourceBillSid, goodsID); + String goodsSkuCode = wmsGoodsTag.getGoodsSkuCode(); + if (wmsGoodsTag.getGoodsCount().compareTo(new BigDecimal("1")) > 0) { + String count = wmsShelfBillDetailService.selAcCountBySourceBillSidAndSkuCode(sourceBillSid, goodsSkuCode); + if (new BigDecimal(count).compareTo(wmsGoodsTag.getGoodsCount()) >= 0) { + wmsGoodsTag.setState(1); + wmsGoodsTagService.updateById(wmsGoodsTag); + } + } + } + } + return rb.success(); + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppSaveBillRecordDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppSaveBillRecordDto.java new file mode 100644 index 0000000000..9ea57129ce --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppSaveBillRecordDto.java @@ -0,0 +1,43 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill.app; + +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Fan + * @description + * @date 2024/5/30 14:21 + */ +@Data +public class AppSaveBillRecordDto implements Dto { + /** + * 商品列表 + */ + private List goodsList = new ArrayList<>(); + private String orgPath; + /** + * 上架单sid + */ + private String shelvesSid; + private String userSid; + + @Data + public static class AppSaveBillRecordDetailsDto { + /** + * 数量 + */ + private String count; + /** + * 商品ID + */ + private String goodsID; + /** + * 库位码 + */ + private String houseCode; + } + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppScanVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppScanVo.java new file mode 100644 index 0000000000..672bae32b2 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppScanVo.java @@ -0,0 +1,44 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill.app; + +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/5/30 11:12 + */ +@Data +public class AppScanVo { + /** + * 商品id + */ + private String goodsID; + /** + * 商品最大可上架数量,通过shelvesId去查询出来的(当前上架单无需上架此商品 false) + */ + private String goodsMax; + /** + * 商品名称 + */ + private String goodsName; + /** + * 1-2-50 + */ + private String houseAddress; + /** + * 库位码 + */ + private String houseCode; + /** + * 库区名+库位名 + */ + private String houseName; + /** + * 0 商品码 1库位码 + */ + private Integer type; + /** + * 网址 + */ + private String url; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppShelInitVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppShelInitVo.java new file mode 100644 index 0000000000..3ff7b6698d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/app/AppShelInitVo.java @@ -0,0 +1,29 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill.app; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Fan + * @description + * @date 2024/5/30 10:41 + */ +@Data +public class AppShelInitVo { + private String shelvesId; + + private List goods = new ArrayList<>(); + + @Data + public static class AppShelInitVoDetails { + private String name; + private String number; + } +} + + + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.java index fb42dbf0c4..a66165b044 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.java @@ -2,6 +2,7 @@ package com.yxt.wms.biz.inventory.wmsshelfbilldetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -21,4 +22,10 @@ public interface WmsShelfBillDetailMapper extends BaseMapper List selectReceiptSidList(); List selDetailsByMainSid(String sid); + + List selectByMainSid(String sid); + + WmsShelfBillDetail selByBillSidAndSkuCode(@Param("shelvesId") String shelvesId,@Param("goodsSkuCode") String goodsSkuCode); + + String selAcCountBySourceBillSidAndSkuCode(@Param("sourceBillSid")String sourceBillSid, @Param("goodsSkuCode")String goodsSkuCode); } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.xml index 4e88aeef86..8778bffb98 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.xml +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.xml @@ -48,4 +48,24 @@ from wms_shelf_bill_detail wsd where billSid = #{sid} + + + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailService.java index e54aa3674f..d29832be1f 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailService.java @@ -2,6 +2,7 @@ package com.yxt.wms.biz.inventory.wmsshelfbilldetail; import cn.hutool.core.bean.BeanUtil; import com.yxt.common.base.service.MybatisBaseService; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import java.util.List; @@ -38,4 +39,16 @@ public class WmsShelfBillDetailService extends MybatisBaseService selDetailsByMainSid(String sid) { return baseMapper.selDetailsByMainSid(sid); } + + public List selectByMainSid(String sid) { + return baseMapper.selectByMainSid(sid); + } + + public WmsShelfBillDetail selByBillSidAndSkuCode(String shelvesId,String goodsSkuCode) { + return baseMapper.selByBillSidAndSkuCode(shelvesId,goodsSkuCode); + } + + public String selAcCountBySourceBillSidAndSkuCode(String sourceBillSid, String goodsSkuCode) { + return baseMapper.selAcCountBySourceBillSidAndSkuCode(sourceBillSid,goodsSkuCode); + } }