Browse Source

商品销售列表、入库、选择库存商品等问题修改

master
fanzongzhe0036 2 months ago
parent
commit
7076b44a7b
  1. 10
      yxt-sms-biz/src/main/java/com/yxt/sms/apiadmin/SmsGoodsRest.java
  2. 4
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smsgoods/SmsGoods.java
  3. 44
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smsgoods/SmsGoodsDto.java
  4. 23
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smsgoods/SmsGoodsService.java
  5. 4
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillMapper.xml
  6. 18
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java
  7. 4
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.xml
  8. 10
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillService.java
  9. 58
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java
  10. 44
      yxt-wms-biz/src/main/java/com/yxt/wms/feign/sms/smsgoods/SmsGoodsDto.java
  11. 24
      yxt-wms-biz/src/main/java/com/yxt/wms/feign/sms/smsgoods/SmsGoodsFeign.java

10
yxt-sms-biz/src/main/java/com/yxt/sms/apiadmin/SmsGoodsRest.java

@ -2,6 +2,7 @@ package com.yxt.sms.apiadmin;
import com.yxt.common.core.result.ResultBean;
import com.yxt.sms.biz.smsgoods.SmsGoods;
import com.yxt.sms.biz.smsgoods.SmsGoodsDto;
import com.yxt.sms.biz.smsgoods.SmsGoodsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -29,4 +30,13 @@ public class SmsGoodsRest {
return rb.success().setData(goods);
}
@ApiOperation("保存修改")
@PostMapping("/saveSmsGoods")
public ResultBean<String> saveSmsGoods(@RequestBody SmsGoodsDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = smsGoodsService.saveSmsGoods(dto);
return rb.success().setData(sid);
}
}

4
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smsgoods/SmsGoods.java

@ -76,8 +76,10 @@ public class SmsGoods extends BaseEntity {
private String supplierName; // 供应商名称
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("组织全路径")
@ApiModelProperty("销售单价")
private BigDecimal price; // 销售单价
@ApiModelProperty("入库单价")
private BigDecimal cost; // 入库单价
@ApiModelProperty("使用组织sid")
private String useOrgSid; // 使用组织sid
@ApiModelProperty("创建组织sid")

44
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smsgoods/SmsGoodsDto.java

@ -0,0 +1,44 @@
package com.yxt.sms.biz.smsgoods;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class SmsGoodsDto {
private String sid;
private String createBySid;
@ApiModelProperty("商品ID")
private String goodsID; // 商品ID
@ApiModelProperty("商品类别sid")
private String goodsTypeSid; // 商品类别sid
@ApiModelProperty("商品类别名称")
private String goodsTypeName; // 商品类别名称
@ApiModelProperty("商品基础信息Sid")
private String goodsSpuSid; // 商品基础信息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("供应商sid")
private String supplierSid; // 供应商sid
@ApiModelProperty("供应商名称")
private String supplierName; // 供应商名称
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("销售单价")
private String price; // 销售单价
@ApiModelProperty("入库单价")
private String cost; // 入库单价
@ApiModelProperty("使用组织sid")
private String useOrgSid; // 使用组织sid
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
}

23
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smsgoods/SmsGoodsService.java

@ -26,13 +26,8 @@
package com.yxt.sms.biz.smsgoods;
import cn.hutool.core.bean.BeanUtil;
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.core.query.PagerQuery;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.sms.biz.smspricestrategy.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@ -42,4 +37,20 @@ public class SmsGoodsService extends MybatisBaseService<SmsGoodsMapper, SmsGoods
public SmsGoods fetchEntityByGoodsID(String goodsID) {
return baseMapper.fetchEntityByGoodsID(goodsID);
}
public String saveSmsGoods(SmsGoodsDto dto) {
String sid = "";
if (StringUtils.isNotBlank(dto.getSid())) {
sid = dto.getSid();
SmsGoods smsGoods = fetchBySid(sid);
BeanUtil.copyProperties(dto,smsGoods,"id","sid");
baseMapper.updateById(smsGoods);
} else {
SmsGoods smsGoods = new SmsGoods();
sid = smsGoods.getSid();
BeanUtil.copyProperties(dto,smsGoods,"id","sid");
baseMapper.insert(smsGoods);
}
return sid;
}
}

4
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillMapper.xml

@ -102,7 +102,7 @@
<select id="listPageSalesGoods" resultType="com.yxt.sms.biz.smssalesbill.SmsWmsInventorySalesVo">
SELECT
i.sid inventorySid,
e.salesPrice price,
s.price,
i.goodsSpuSid,
i.goodsSkuSid,
i.goodsSpuName,
@ -126,7 +126,7 @@
yxt_wms.wms_inventory as i
LEFT JOIN yxt_wms.wms_warehouse_area as wa ON wa.warehouseSid = i.warehouseSid
LEFT JOIN yxt_wms.wms_warehouse_info as wi ON wi.sid = i.warehouseSid
LEFT JOIN yxt_base.base_goods_sku_extend as e ON e.goodsSkuSid = i.goodsSkuSid
LEFT JOIN yxt_sms.sms_goods as s ON s.goodsID = i.goodsID
<where>${ew.sqlSegment}</where>
</select>
<select id="selectBySid" resultType="java.lang.Integer">

18
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java

@ -30,7 +30,12 @@ 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.config.component.DocPdfComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
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.biz.smsgoods.SmsGoods;
import com.yxt.sms.biz.smsgoods.SmsGoodsService;
import com.yxt.sms.biz.smssalesbill.report.*;
@ -43,7 +48,6 @@ import com.yxt.sms.biz.smssalesbillinvoice.SmsSalesBillInvoiceService;
import com.yxt.sms.biz.smssalesbillsettle.SmsSalesBillSettleService;
import com.yxt.sms.feign.as.asaitem.AsServiceAttachItem;
import com.yxt.sms.feign.as.asaitem.AsServiceAttachItemFeign;
import com.yxt.sms.feign.fms.fmsreceivesettle.FmsReceivesettle;
import com.yxt.sms.feign.fms.fmsreceivesettle.FmsReceivesettleDto;
import com.yxt.sms.feign.fms.fmsreceivesettle.FmsReceivesettleFeign;
import com.yxt.sms.feign.portal.sysorganization.SysOrganizationFeign;
@ -51,19 +55,14 @@ 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.sysuser.SysUserVo;
import com.yxt.sms.feign.wms.wmsinventory.*;
import com.yxt.sms.feign.wms.wmsinventory.WmsInventory;
import com.yxt.sms.feign.wms.wmsinventory.WmsInventoryFeign;
import com.yxt.sms.feign.wms.wmsinventory.WmsUpdateCountQuery;
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;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -475,6 +474,7 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper,
}
qw.eq("wi.warehouseTypeValue","配件库");
qw.apply("i.count > 0");
qw.apply("s.price is NOT NULL AND s.price != ''");
IPage<SmsSalesBill> page = PagerUtil.queryToPage(pq);
IPage<SmsWmsInventorySalesVo> pagging = baseMapper.listPageSalesGoods(page, qw);
PagerVo<SmsWmsInventorySalesVo> p = PagerUtil.pageToVo(pagging, null);

4
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.xml

@ -46,9 +46,11 @@
wi.count,
wi.sid inventorySid,
wi.supplierName,
wi.cost as money
-- wi.cost as money
s.price as money
from wms_inventory wi
LEFT JOIN yxt_wms.wms_warehouse_info as wh ON wh.sid = wi.warehouseSid
LEFT JOIN yxt_sms.sms_goods as s ON s.goodsID = wi.goodsID
<where>
${ew.sqlSegment}
</where>

10
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillService.java

@ -1,7 +1,6 @@
package com.yxt.wms.biz.inventory.wmsoutbill;
import cn.hutool.core.bean.BeanUtil;
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;
@ -11,19 +10,11 @@ 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.wmsinventory.WmsInventory;
import com.yxt.wms.biz.inventory.wmsinventory.WmsInventorySaveDto;
import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService;
import com.yxt.wms.biz.inventory.wmsinventoryrecord.WmsInventoryRecordDto;
import com.yxt.wms.biz.inventory.wmsinventoryrecord.WmsInventoryRecordService;
import com.yxt.wms.biz.inventory.wmsoutbilldetail.WmsOutBillDetail;
import com.yxt.wms.biz.inventory.wmsoutbilldetail.WmsOutBillDetailDto;
import com.yxt.wms.biz.inventory.wmsoutbilldetail.WmsOutBillDetailService;
import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBill;
import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillPageVo;
import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillQuery;
import com.yxt.wms.biz.inventory.wmsshelfbill.WmsShelfBill;
import com.yxt.wms.biz.inventory.wmsshelfbilldetail.WmsShelfBillDetail;
import com.yxt.wms.biz.inventory.wmsshelfbilldetail.WmsShelfBillDetailVos;
import com.yxt.wms.feign.as.AsBusrepairInventorybillFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -148,6 +139,7 @@ public class WmsOutBillService extends MybatisBaseService<WmsOutBillMapper, WmsO
qw.eq("wi.useOrgSid", query.getUseOrgSid());
}
qw.apply("wi.count > 0");
qw.apply("s.price is NOT NULL AND s.price != ''");
qw.eq("wh.warehouseTypeValue","配件库");
//ToDo:供应商
/* if (StringUtils.isNotBlank(query.getSupplierName())) {

58
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java

@ -51,6 +51,8 @@ import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.wms.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.wms.feign.portal.sysuser.SysUserFeign;
import com.yxt.wms.feign.portal.sysuser.SysUserVo;
import com.yxt.wms.feign.sms.smsgoods.SmsGoodsDto;
import com.yxt.wms.feign.sms.smsgoods.SmsGoodsFeign;
import com.yxt.wms.feign.sms.smspricestrategybilldetail.SmsPricesTrategyBillDetailFeign;
import com.yxt.wms.feign.sms.smsspricestrategybillgoodstypedetail.SmsPricesTrategyBillGoodsTypeDetailFeign;
import com.yxt.wms.feign.sms.smsspricestrategybillgoodstypedetail.SmsPricestrategyBillGoodstypedetailDetailsVo;
@ -117,7 +119,8 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
private SmsPricesTrategyBillGoodsTypeDetailFeign smsPricesTrategyBillGoodsTypeDetailFeign;
@Autowired
private BaseGoodsSkuExtendFeign baseGoodsSkuExtendFeign;
@Autowired
private SmsGoodsFeign smsGoodsFeign;
public PagerVo<WmsShelfBillVo> listPage(PagerQuery<WmsShelfBillQuery> pq) {
WmsShelfBillQuery query = pq.getParams();
QueryWrapper<WmsShelfBill> qw = new QueryWrapper<>();
@ -759,6 +762,10 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
}
}
for (AppSaveBillRecordDto.AppSaveBillRecordDetailsDto r : goodsList) {
String supplierSid = "";
String supplierName = "";
String count = r.getCount();
String goodsID = r.getGoodsID();
String houseCode = r.getHouseCode();
@ -766,22 +773,6 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
String goodsSkuCode = wmsGoodsTag.getGoodsSkuCode();
WmsShelfBillDetail shelfBillGoods = wmsShelfBillDetailService.selByBillSidAndSkuCode(shelvesId, goodsSkuCode);
WmsReceiptBillDetail receiptBillDetail = wmsReceiptBillDetailService.selectByBillSidAndGoodsSkuCode(sourceBillSid, goodsSkuCode);
//计算sku销售价
BaseGoodsSpu baseGoodsSpu = baseGoodsSpuFeign.fetchEntityBySid(shelfBillGoods.getGoodsSpuSid()).getData();
String tjmxSid = smsPricesTrategyBillDetailFeign.selSid(baseGoodsSpu.getGoodsTypeSid(), deptSid).getData();
if (StringUtils.isBlank(tjmxSid)) {
return rb.setMsg("该商品类型没有对应的定调价策略,无法上架");
} else {
List<SmsPricestrategyBillGoodstypedetailDetailsVo> data = smsPricesTrategyBillGoodsTypeDetailFeign.selByMainSid(tjmxSid).getData();
for (SmsPricestrategyBillGoodstypedetailDetailsVo smsPricestrategyBillGoodstypedetailDetailsVo : data) {
BigDecimal cost = receiptBillDetail.getCost();
if (cost.compareTo(smsPricestrategyBillGoodstypedetailDetailsVo.getRangeStart()) != -1 && cost.compareTo(smsPricestrategyBillGoodstypedetailDetailsVo.getRangeEnd()) != 1) {
BigDecimal markupRate = smsPricestrategyBillGoodstypedetailDetailsVo.getMarkupRate();
cost = cost.add(cost.multiply(markupRate).divide(new BigDecimal("100")));
baseGoodsSkuExtendFeign.updateSalesPrice(shelfBillGoods.getGoodsSkuSid(), cost.toString());
}
}
}
BigDecimal actualCount = BigDecimal.ZERO;
if (null != shelfBillGoods.getActualCount()) {
actualCount = shelfBillGoods.getActualCount();
@ -834,9 +825,11 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
}
if (StringUtils.isNotBlank(ansBill.getSupplierName())) {
recordDto.setSupplierName(ansBill.getSupplierName());
supplierName = ansBill.getSupplierName();
}
if (StringUtils.isNotBlank(ansBill.getSupplierSid())) {
recordDto.setSupplierSid(ansBill.getSupplierSid());
supplierSid = ansBill.getSupplierSid();
}
}
}
@ -852,6 +845,37 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
}
}
wmsInventoryRecordService.saveRecord(recordDto);
//推送商品销售列表
//计算sku销售价
BigDecimal cost = BigDecimal.ZERO;//入库价
BigDecimal price = BigDecimal.ZERO;//计算后的销售价
BaseGoodsSpu baseGoodsSpu = baseGoodsSpuFeign.fetchEntityBySid(shelfBillGoods.getGoodsSpuSid()).getData();
String tjmxSid = smsPricesTrategyBillDetailFeign.selSid(baseGoodsSpu.getGoodsTypeSid(), deptSid).getData();
if (StringUtils.isNotBlank(tjmxSid)) {
List<SmsPricestrategyBillGoodstypedetailDetailsVo> data = smsPricesTrategyBillGoodsTypeDetailFeign.selByMainSid(tjmxSid).getData();
for (SmsPricestrategyBillGoodstypedetailDetailsVo smsPricestrategyBillGoodstypedetailDetailsVo : data) {
cost = receiptBillDetail.getCost();
if (cost.compareTo(smsPricestrategyBillGoodstypedetailDetailsVo.getRangeStart()) != -1 && cost.compareTo(smsPricestrategyBillGoodstypedetailDetailsVo.getRangeEnd()) != 1) {
BigDecimal markupRate = smsPricestrategyBillGoodstypedetailDetailsVo.getMarkupRate();
price = cost.add(cost.multiply(markupRate).divide(new BigDecimal("100")));
}
}
}
SmsGoodsDto smsGoodsDto = new SmsGoodsDto();
BeanUtil.copyProperties(wmsGoodsTag, smsGoodsDto, "sid", "createBySid");
smsGoodsDto.setCreateBySid(dto.getUserSid());
smsGoodsDto.setUseOrgSid(deptSid);
smsGoodsDto.setCreateOrgSid(createOrgSid);
smsGoodsDto.setGoodsID(goodsID);
smsGoodsDto.setGoodsTypeSid(baseGoodsSpu.getGoodsTypeSid());
smsGoodsDto.setSupplierSid(supplierSid);
smsGoodsDto.setSupplierName(supplierName);
smsGoodsDto.setCost(cost.toString());
if (price.compareTo(BigDecimal.ZERO) != 0) {
smsGoodsDto.setPrice(price.toString());
}
smsGoodsFeign.saveSmsGoods(smsGoodsDto);
}
List<WmsShelfBillDetail> vos = wmsShelfBillDetailService.selectByMainSid(dto.getSid());
if (!vos.isEmpty()) {

44
yxt-wms-biz/src/main/java/com/yxt/wms/feign/sms/smsgoods/SmsGoodsDto.java

@ -0,0 +1,44 @@
package com.yxt.wms.feign.sms.smsgoods;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class SmsGoodsDto {
private String sid;
private String createBySid;
@ApiModelProperty("商品ID")
private String goodsID; // 商品ID
@ApiModelProperty("商品类别sid")
private String goodsTypeSid; // 商品类别sid
@ApiModelProperty("商品类别名称")
private String goodsTypeName; // 商品类别名称
@ApiModelProperty("商品基础信息Sid")
private String goodsSpuSid; // 商品基础信息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("供应商sid")
private String supplierSid; // 供应商sid
@ApiModelProperty("供应商名称")
private String supplierName; // 供应商名称
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("销售单价")
private String price; // 销售单价
@ApiModelProperty("入库单价")
private String cost; // 入库单价
@ApiModelProperty("使用组织sid")
private String useOrgSid; // 使用组织sid
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
}

24
yxt-wms-biz/src/main/java/com/yxt/wms/feign/sms/smsgoods/SmsGoodsFeign.java

@ -0,0 +1,24 @@
package com.yxt.wms.feign.sms.smsgoods;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @description:
* @author: dimengzhe
* @date: 2024/3/20
**/
@FeignClient(
contextId = "yxt-sms-SmsGoods",
name = "yxt-sms",
path = "/apiadmin/v1/smsGoods"
)
public interface SmsGoodsFeign {
@ApiOperation("保存修改")
@PostMapping("/saveSmsGoods")
public ResultBean<String> saveSmsGoods(@RequestBody SmsGoodsDto dto);
}
Loading…
Cancel
Save