diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java b/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java index e4a07a3e5f..acf881b4ee 100644 --- a/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java @@ -47,6 +47,8 @@ import com.yxt.sms.feign.portal.sysorganization.SysOrganizationVo; import com.yxt.sms.feign.privilege.PrivilegeQuery; import com.yxt.sms.feign.sysuser.SysUserFeign; import com.yxt.sms.feign.wms.wmsinventory.*; +import com.yxt.sms.feign.wms.wmsinventoryrecord.WmsInventoryRecordDto; +import com.yxt.sms.feign.wms.wmsinventoryrecord.WmsInventoryRecordFeign; import com.yxt.sms.utils.SmsBillNo; import com.yxt.sms.utils.SmsRule; import org.apache.commons.lang3.StringUtils; @@ -62,9 +64,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; /** * Project: sms(sms)
@@ -82,6 +83,8 @@ import java.util.List; @Service public class SmsSalesBillService extends MybatisBaseService { + @Autowired + private WmsInventoryRecordFeign wmsInventoryRecordFeign; @Autowired private SmsSalesBillDetailService smsSalesBillDetailService; @Autowired @@ -408,15 +411,58 @@ public class SmsSalesBillService extends MybatisBaseService billDetailList = smsSalesBillDetailService.fetchByMainSid(sid); -// if (!billDetailList.isEmpty()) { -// for (SmsSalesBillDetail salesBillDetail : billDetailList) { -// WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery(); -//// countQuery.setSid(salesBillDetail.getInventorySid()); -// countQuery.setCount(salesBillDetail.getCount()); -// countQuery.setAddOrReduce(1); -// wmsInventoryFeign.updateInventoryCount(countQuery); -// } -// } + if (!billDetailList.isEmpty()) { + for (SmsSalesBillDetail salesBillDetail : billDetailList) { + Map map = new HashMap<>(); + //取商品id 和 需要扣除数量 + String goodsID = salesBillDetail.getGoodsID(); + BigDecimal count = salesBillDetail.getCount(); + List data = wmsInventoryFeign.getListByGoodsID(goodsID).getData(); + if (!data.isEmpty()) { + for (WmsInventory inventory : data) { + if (count.compareTo(BigDecimal.ZERO) > 0) { + BigDecimal inventoryCount = inventory.getCount(); + if (inventoryCount.compareTo(count) >= 0) { + map.put(inventory.getSid(), count); + count = count.subtract(inventory.getCount()); + continue; + } + map.put(inventory.getSid(), inventory.getCount()); + count = count.subtract(inventory.getCount()); + } + } + for (Map.Entry entry : map.entrySet()) { + String inventorySid = entry.getKey(); + BigDecimal inventoryCount = entry.getValue(); + WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto(); + WmsInventory inventory = wmsInventoryFeign.fetchEntityBySid(inventorySid).getData(); + BigDecimal wiCount = inventory.getCount(); + BigDecimal subtractCount = wiCount.subtract(inventoryCount); + recordDto.setInventorySid(inventorySid); + recordDto.setCreateBySid(smsSalesBill.getCreateBySid()); + recordDto.setUseOrgSid(smsSalesBill.getDeptSid()); + recordDto.setCreateOrgSid(smsSalesBill.getCreateOrgSid()); + recordDto.setHandlerSid(smsSalesBill.getCreateBySid()); + recordDto.setHandlerName(smsSalesBill.getCreateByName()); + recordDto.setGoodsID(goodsID); + recordDto.setSourceBillSid(sid); + recordDto.setBillNo(smsSalesBill.getBillNo()); + recordDto.setBillType("0"); + recordDto.setBusTypeKey("11"); + recordDto.setBusTypeValue("销售出库"); + BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid"); + recordDto.setCount(inventoryCount.toString()); + recordDto.setCurrentCount(subtractCount.toString()); + wmsInventoryRecordFeign.save(recordDto); + WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery(); + countQuery.setSid(inventorySid); + countQuery.setCount(inventoryCount); + countQuery.setAddOrReduce(1); + wmsInventoryFeign.updateInventoryCount(countQuery); + } + } + } + } } return rb.success(); } diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventory.java b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventory.java index 06b2c8a5aa..0d66b23afd 100644 --- a/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventory.java +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventory.java @@ -43,6 +43,7 @@ public class WmsInventory extends BaseEntity { private String warehouseArea;//库区名称 private String warehouseRackSid;//货架sid private String warehouseRackName;//货架名称 + private String warehouseRackCode; private int isShowDiscount;//是否显示折扣标志 private Date firstInDate;//首次入库日期-计算库龄的依据 private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库 diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeign.java b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeign.java index 7b8583c63e..b797ab1389 100644 --- a/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeign.java +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeign.java @@ -5,6 +5,7 @@ import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -34,4 +35,8 @@ public interface WmsInventoryFeign { @ApiOperation("根据Sid获取库存实体") @PostMapping("/fetchEntityBySid") ResultBean fetchEntityBySid(@RequestParam("sid") String sid); + + @ApiOperation("根据goodsID获取数据") + @GetMapping("/getListByGoodsID") + public ResultBean> getListByGoodsID(@RequestParam("goodsID") String goodsID); } diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeignFallback.java b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeignFallback.java index 1758d24923..50b23a75aa 100644 --- a/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeignFallback.java +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeignFallback.java @@ -62,4 +62,9 @@ public class WmsInventoryFeignFallback implements WmsInventoryFeign { public ResultBean fetchEntityBySid(String sid) { return null; } -} \ No newline at end of file + + @Override + public ResultBean> getListByGoodsID(String goodsID) { + return null; + } +} diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordDto.java b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordDto.java new file mode 100644 index 0000000000..ca3cc39bf8 --- /dev/null +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordDto.java @@ -0,0 +1,116 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.sms.feign.wms.wmsinventoryrecord; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: wms(yxt)
+ * File: WmsInventoryRecordDto.java
+ * Class: inventroy.api.wmsinventoryrecord.WmsInventoryRecordDto
+ * Description: 库存出入库记录 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-04-08 17:27:39
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存出入库记录 数据传输对象", description = "库存出入库记录 数据传输对象") +public class WmsInventoryRecordDto implements Dto { + + private String sid; // sid + + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @ApiModelProperty("创建人sid") + private String createBySid; // 商品ID + @ApiModelProperty("商品ID") + private String goodsID; // 商品ID + @ApiModelProperty("来源单sid(业务单sid)") + private String sourceBillSid; // 来源单sid(业务单sid) + @ApiModelProperty("来源单据编号") + private String billNo; // 来源单据编号 + @ApiModelProperty("单据类型(1入库、0出库)") + private String billType; // 单据类型(1入库、0出库) + @ApiModelProperty("业务类型key(采购入库、维修出入库、销售出入库等)") + private String busTypeKey; // 业务类型key(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等) + @ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商") + private String billObjSid; // 客户/供应商sid,出库是为客户,入库时为供应商 + @ApiModelProperty("客户/供应商名称") + private String billObjName; // 客户/供应商名称 + @ApiModelProperty("批次号") + private String batchNumber; // 批次号 + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; // 商品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; // 商品Skusid + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; // 商品Sku名称 + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; // 商品编码(图号) + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("出入库后的库存量") + private String currentCount; // 出入库后的库存量 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private String count; // 数量 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("库位sid") + private String warehouseRackSid; // 库位sid + @ApiModelProperty("库位编号") + private String warehouseRackCode; // 库位编号 + @ApiModelProperty("入库单价") + private String cost; + @ApiModelProperty("税率") + private String tax; + @ApiModelProperty("入库金额") + private String amount; + @ApiModelProperty("经办人sid") + private String handlerSid; // 库位sid + @ApiModelProperty("经办人") + private String handlerName; // 库位编号 + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + +} diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordFeign.java b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordFeign.java new file mode 100644 index 0000000000..45e758582b --- /dev/null +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordFeign.java @@ -0,0 +1,32 @@ +package com.yxt.sms.feign.wms.wmsinventoryrecord; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.sms.feign.wms.wmsinventory.*; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @description: 库存记录 + * @author: fzz + * @date: 2024/3/7 + **/ +@FeignClient( + contextId = "yxt-wms-WmsInventoryRecord", + name = "yxt-wms", + path = "apiadmin/inventory/wmsinventoryrecord" +) +public interface WmsInventoryRecordFeign { + + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody WmsInventoryRecordDto dto); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java index 16b73e03fe..463ea8bf8d 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java @@ -34,6 +34,12 @@ public class WmsInventoryRest { HttpServletResponse response; + @ApiOperation("根据goodsID获取数据") + @GetMapping("/getListByGoodsID") + public ResultBean> getListByGoodsID(@RequestParam("goodsID") String goodsID) { + return wmsInventoryService.getListByGoodsID(goodsID); + } + @ApiOperation("分页列表") @PostMapping("/listPage") public ResultBean> listPage(@RequestBody PagerQuery pq) { diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java index 5a852dc6c7..aa1bddd299 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java @@ -50,4 +50,6 @@ public interface WmsInventoryMapper extends BaseMapper { IPage returnGoodsListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); IPage handleGoodsListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + List getListByGoodsID(@Param("goodsID") String goodsID); } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml index c8fac9c55f..130a618b8f 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml @@ -288,4 +288,7 @@ ${ew.sqlSegment} + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java index 978be7bc1d..0619534f4e 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java @@ -496,4 +496,10 @@ public class WmsInventoryService extends MybatisBaseService p = PagerUtil.pageToVo(pagging, null); return rb.success().setData(p); } + + public ResultBean> getListByGoodsID(String goodsID) { + ResultBean rb = ResultBean.fireFail(); + List list = baseMapper.getListByGoodsID(goodsID); + return rb.setData(list); + } }