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);
+ }
}