diff --git a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/BaseGoodsSkuRest.java b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/BaseGoodsSkuRest.java index 64d76e8..bf8341e 100644 --- a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/BaseGoodsSkuRest.java +++ b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/BaseGoodsSkuRest.java @@ -1,8 +1,12 @@ package com.yxt.oms.apiadmin.aggregation; +import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; import com.yxt.oms.biz.func.basegoodssku.BaseGoodsSkuService; import com.yxt.oms.biz.func.basegoodssku.BaseGoodsSkuVo; +import com.yxt.oms.biz.func.basegoodssku.GoodsSkuSelectQuery; +import com.yxt.oms.biz.func.basegoodssku.SkuSelectList1; import com.yxt.oms.utils.OrgPathQuery; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; diff --git a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/PurchaseBillRest.java b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/PurchaseBillRest.java index 3c35b53..65bad4d 100644 --- a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/PurchaseBillRest.java +++ b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/PurchaseBillRest.java @@ -29,6 +29,8 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import com.yxt.oms.biz.func.purchasebill.*; +import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.WarehouseGoodsPurchaseReportVo; +import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.WarehouseInventoryCountReportQuery; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -47,6 +49,16 @@ public class PurchaseBillRest { public ResultBean> listPage(@RequestBody PagerQuery pq){ return purchaseBillService.listPageVo(pq); } + @ApiOperation("商品采购分页列表") + @PostMapping("/goodsPurchase") + public ResultBean> goodsPurchase(@RequestBody PagerQuery pq){ + return purchaseBillService.goodsPurchase(pq); + } + @ApiOperation("商品采购导出") + @PostMapping("/goodsPurchaseExport") + public void goodsPurchaseExport(@RequestBody WarehouseInventoryCountReportQuery pq){ + purchaseBillService.goodsPurchaseExport(pq); + } @ApiOperation("采购订单审核管理") @PostMapping("/exlistPage") @@ -89,4 +101,9 @@ public class PurchaseBillRest { public ResultBean examine(@RequestParam("sid") String sid,@RequestParam("state") String state,@RequestParam("remarks") String remarks){ return purchaseBillService.examine(sid,state,remarks); } + @ApiOperation("采购单审核") + @PostMapping("/茨沟入库") + public ResultBean examine4(@RequestParam("sid") String sid,@RequestParam("state") String state,@RequestParam("remarks") String remarks){ + return purchaseBillService.examine(sid,state,remarks); + } } diff --git a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/SmsSalesBillRest.java b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/SmsSalesBillRest.java index 902e174..3624525 100644 --- a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/SmsSalesBillRest.java +++ b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/SmsSalesBillRest.java @@ -29,6 +29,7 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import com.yxt.oms.biz.func.smssalesbill.*; +import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.WarehouseGoodsSalesReportVo; import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.WarehouseInventoryCountReportQuery; import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.WarehouseOutReportVo; import io.swagger.annotations.Api; @@ -69,6 +70,23 @@ public class SmsSalesBillRest { public ResultBean> customerSales(@RequestBody PagerQuery pq) { return smsSalesBillService.customerSales(pq); } + @ApiOperation("客户销售报表") + @PostMapping("/goodsSales") + public ResultBean> goodsSales(@RequestBody PagerQuery pq) { + return smsSalesBillService.goodsSales(pq); + } + + @ApiOperation("客户销售报表导出") + @PostMapping("/customerSalesExport") + public void customerSalesExport(@RequestBody WarehouseInventoryCountReportQuery pq) { + smsSalesBillService.customerSalesExport(pq); + } + @ApiOperation("客户销售报表导出") + @PostMapping("/goodsSalesExport") + public void goodsSalesExport(@RequestBody WarehouseInventoryCountReportQuery pq) { + smsSalesBillService.goodsSalesExport(pq); + } + @ApiOperation("新增或修改") @PostMapping("/save") public ResultBean save(@RequestBody SmsSalesBillDto dto) { diff --git a/oms/src/main/java/com/yxt/oms/biz/func/basegoodssku/GoodsSkuSelectQuery.java b/oms/src/main/java/com/yxt/oms/biz/func/basegoodssku/GoodsSkuSelectQuery.java new file mode 100644 index 0000000..1ca33e5 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/basegoodssku/GoodsSkuSelectQuery.java @@ -0,0 +1,40 @@ +package com.yxt.oms.biz.func.basegoodssku; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class GoodsSkuSelectQuery implements Query { + + + + private String createOrgSid; + //商品编码 + private String goodsCode; + //商品名称 + private String goodsName; + //条形码 + private String barCode; + //规格编码 + private String goodsSkuCode; + //规格型号 + private String title; + //具体规格 + private String ownSpec; + //品牌 + private String brandName; + private String brandSid; + //厂家 + private String manufacturerName; + private String manufacturerSid; + //分类 + private String typeName; + private String typeSid; + //厂家货号 + private String manufacturerCode; +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/basegoodssku/SkuSelectList1.java b/oms/src/main/java/com/yxt/oms/biz/func/basegoodssku/SkuSelectList1.java new file mode 100644 index 0000000..7095331 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/basegoodssku/SkuSelectList1.java @@ -0,0 +1,48 @@ +package com.yxt.oms.biz.func.basegoodssku; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class SkuSelectList1 { + + //spusid + private String goodsSpuSid; + //商品编码 + private String goodsCode; + //商品名称 + private String goodsName; + //条形码 + private String barCode; + //规格编码 + private String goodsSkuCode; + private String goodsSkuSid; + //规格型号 + private String title; + //具体规格 + private String ownSpec; + //分类 + private String typeName; + private String typeSid; + //品牌 + private String brandName; + private String brandSid; + //厂家名 + private String manufacturerSid; + private String manufacturerName; + //厂家货号 + private String factoryCode; + //单位 + private String unit; + private String unitSid; + //销售单价 + private BigDecimal salesPrice=new BigDecimal(0); + + +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/purchasebill/PurchaseBillService.java b/oms/src/main/java/com/yxt/oms/biz/func/purchasebill/PurchaseBillService.java index a78d305..d57d355 100644 --- a/oms/src/main/java/com/yxt/oms/biz/func/purchasebill/PurchaseBillService.java +++ b/oms/src/main/java/com/yxt/oms/biz/func/purchasebill/PurchaseBillService.java @@ -28,13 +28,17 @@ package com.yxt.oms.biz.func.purchasebill; import cn.hutool.core.date.DateUtil; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.ExportExcelUtils; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; +import com.yxt.oms.biz.func.basebrandinfo.BaseBrandInfoVo; import com.yxt.oms.biz.func.basegoodssku.BaseGoodsSkuVo; import com.yxt.oms.biz.func.basegoodsspu.BaseGoodsSpuVo; +import com.yxt.oms.biz.func.basegoodstype.BaseGoodsTypeVo; import com.yxt.oms.biz.func.commonmethod.CommonMethod; import com.yxt.oms.biz.func.commonmethod.DataRule; +import com.yxt.oms.biz.func.crmcustomer.CrmCustomerTemp; import com.yxt.oms.biz.func.purchaseappendix.PurchaseAppendixUrl; import com.yxt.oms.biz.func.purchasebilldetail.PurchaseBillDetailDetailsVo; import com.yxt.oms.biz.func.purchasebilldetail.PurchaseBillDetailDto; @@ -52,13 +56,17 @@ import com.yxt.oms.feign.portal.sysstafforg.SysStaffOrgFeign; import com.yxt.oms.feign.portal.sysuser.SysUserFeign; import com.yxt.oms.feign.purchase.purchasebill.PurchaseBillFeign; import com.yxt.oms.feign.warehouse.warehouseansbill.WarehouseAnsBillFeign; +import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.*; import com.yxt.oms.utils.Rule; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.net.URLEncoder; import java.util.*; @Service @@ -82,6 +90,16 @@ public class PurchaseBillService { private FileUploadComponent fileUploadComponent; @Autowired private BaseGoodsSpuFeign baseGoodsSpuFeign; + @Autowired + private BaseGoodsSkuFeign baseGoodsSkuFeign; + @Autowired + BaseGoodsTypeFeign baseGoodsTypeFeign; + @Autowired + BaseBrandInfoFeign baseBrandInfoFeign; + @Autowired + private WarehouseInventoryRecordFeign warehouseInventoryRecordFeign; + @Autowired + HttpServletResponse response; public ResultBean> listPageVo(PagerQuery pq) { ResultBean rb = ResultBean.fireFail(); @@ -103,7 +121,83 @@ public class PurchaseBillService { } return rb.success().setData(p); } + public ResultBean> goodsPurchase(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + ResultBean> pagerVoResultBean = warehouseInventoryRecordFeign.goodsPurchase(pq); + for (WarehouseGoodsPurchaseReportVo record : pagerVoResultBean.getData().getRecords()) { + BigDecimal bigDecimal=new BigDecimal(record.getAmount()); + if(bigDecimal.compareTo(new BigDecimal(0))!=1){ + record.setAmount(new BigDecimal(record.getCount()).multiply(new BigDecimal(record.getCost())).toString()); + } + ResultBean initialization1=new ResultBean<>(); + if(StringUtils.isBlank(record.getGoodsSpuSid())){ + ResultBean initialization = baseGoodsSkuFeign.initialization(record.getGoodsSkuSid()); + initialization1 = baseGoodsSpuFeign.initialization(initialization.getData().getGoodsSpuSid()); + record.setBarCode(initialization1.getData().getBarCode()); + record.setGoodsCode(initialization1.getData().getGoodsCode()); + }else{ + initialization1 = baseGoodsSpuFeign.initialization(record.getGoodsSpuSid()); + record.setBarCode(initialization1.getData().getBarCode()); + record.setGoodsCode(initialization1.getData().getGoodsCode()); + } + if(StringUtils.isBlank(record.getTitle())){ +// record.setTitle(); + } + if(StringUtils.isBlank(record.getBrandName())){ + ResultBean initialization3 = baseBrandInfoFeign.initialization(initialization1.getData().getBrandSid()); + record.setBrandSid(initialization3.getData().getSid()); + record.setBrandName(initialization3.getData().getBrandName()); + } + if(StringUtils.isBlank(record.getTypeName())){ + ResultBean initialization2 = baseGoodsTypeFeign.initialization(initialization1.getData().getGoodsTypeSid()); + record.setTypeName(initialization2.getData().getGoodsTypeName()); + record.setTypeSid(initialization2.getData().getSid()); + } + + } + return pagerVoResultBean; + } + public void goodsPurchaseExport(WarehouseInventoryCountReportQuery pq) { + List exportVoList = warehouseInventoryRecordFeign.goodsPurchaseExport(pq); + for (WarehouseGoodsPurchaseReportExcelVo record : exportVoList) { + BigDecimal bigDecimal=new BigDecimal(record.getAmount()); + if(bigDecimal.compareTo(new BigDecimal(0))!=1){ + record.setAmount(new BigDecimal(record.getCount()).multiply(new BigDecimal(record.getCost())).toString()); + } + ResultBean initialization1=new ResultBean<>(); + if(StringUtils.isBlank(record.getGoodsSpuSid())){ + ResultBean initialization = baseGoodsSkuFeign.initialization(record.getGoodsSkuSid()); + initialization1 = baseGoodsSpuFeign.initialization(initialization.getData().getGoodsSpuSid()); + record.setBarCode(initialization1.getData().getBarCode()); + record.setGoodsCode(initialization1.getData().getGoodsCode()); + }else{ + initialization1 = baseGoodsSpuFeign.initialization(record.getGoodsSpuSid()); + record.setBarCode(initialization1.getData().getBarCode()); + record.setGoodsCode(initialization1.getData().getGoodsCode()); + } + if(StringUtils.isBlank(record.getBrandName())){ + ResultBean initialization3 = baseBrandInfoFeign.initialization(initialization1.getData().getBrandSid()); + record.setBrandSid(initialization3.getData().getSid()); + record.setBrandName(initialization3.getData().getBrandName()); + } + if(StringUtils.isBlank(record.getTypeName())){ + ResultBean initialization2 = baseGoodsTypeFeign.initialization(initialization1.getData().getGoodsTypeSid()); + record.setTypeName(initialization2.getData().getGoodsTypeName()); + record.setTypeSid(initialization2.getData().getSid()); + } + + } + //定义导出的excel名字 + String excelName = "商品采购列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WarehouseGoodsPurchaseReportExcelVo.class, response); + } public ResultBean> exlistPage(PagerQuery pq) { PurchaseBillQuery query = pq.getParams(); //通用组装方法 根据用户sid、菜单、组织全路径sid 获取组装参数 diff --git a/oms/src/main/java/com/yxt/oms/biz/func/smssalesbill/SmsSalesBillService.java b/oms/src/main/java/com/yxt/oms/biz/func/smssalesbill/SmsSalesBillService.java index 3a17d8e..32de1f4 100644 --- a/oms/src/main/java/com/yxt/oms/biz/func/smssalesbill/SmsSalesBillService.java +++ b/oms/src/main/java/com/yxt/oms/biz/func/smssalesbill/SmsSalesBillService.java @@ -30,17 +30,28 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.ExportExcelUtils; 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 com.yxt.oms.biz.func.basebrandinfo.BaseBrandInfoVo; +import com.yxt.oms.biz.func.basegoodssku.BaseGoodsSkuVo; +import com.yxt.oms.biz.func.basegoodsskuextend.BaseGoodsSkuExtendVo; +import com.yxt.oms.biz.func.basegoodsspu.BaseGoodsSpuVo; +import com.yxt.oms.biz.func.basegoodstype.BaseGoodsTypeVo; import com.yxt.oms.biz.func.crmcustomer.CrmCustomerTemp; import com.yxt.oms.feign.customer.customertemp.CrmCustomerTempFeign; +import com.yxt.oms.feign.goods.basebrandinfo.BaseBrandInfoFeign; +import com.yxt.oms.feign.goods.basegoodssku.BaseGoodsSkuFeign; +import com.yxt.oms.feign.goods.basegoodsskuextend.BaseGoodsSkuExtendFeign; +import com.yxt.oms.feign.goods.basegoodsspu.BaseGoodsSpuFeign; +import com.yxt.oms.feign.goods.basegoodsspu.GoodsSpuQuery; +import com.yxt.oms.feign.goods.basegoodsspu.GoodsSpuVo; +import com.yxt.oms.feign.goods.basegoodstype.BaseGoodsTypeFeign; import com.yxt.oms.feign.sales.smssalesbill.*; import com.yxt.oms.feign.warehouse.warehouseInventory.WarehouseInventoryFeign; -import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.WarehouseInventoryCountReportQuery; -import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.WarehouseInventoryRecordFeign; -import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.WarehouseOutReportVo; +import com.yxt.oms.feign.warehouse.warehouseinventoryrecord.*; import com.yxt.oms.feign.warehouse.warehouseoutbill.WarehouseOutBillDetailDto; import com.yxt.oms.feign.warehouse.warehouseoutbill.WarehouseOutBillDto; import com.yxt.oms.feign.warehouse.warehouseoutbill.WarehouseOutBillFeign; @@ -50,10 +61,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * Project: ss-sales(ss-sales)
@@ -83,6 +99,19 @@ public class SmsSalesBillService extends MybatisBaseService createQueryWrapper(SmsSalesBillQuery query) { // todo: 这里根据具体业务调整查询条件 @@ -182,7 +211,137 @@ public class SmsSalesBillService extends MybatisBaseService> goodsSales(PagerQuery pq) { +// crmCustomerTempFeign. + GoodsSpuQuery query=new GoodsSpuQuery(); + if(StringUtils.isNotBlank(query.getBrandSid())){ + query.setBrandSid(query.getBrandSid()); + } + if(StringUtils.isNotBlank(query.getTypeSid())){ + query.setTypeSid(query.getTypeSid()); + } + if(StringUtils.isNotBlank(query.getBrandSid())|| StringUtils.isNotBlank(query.getTypeSid())){ + ResultBean> listResultBean = baseGoodsSpuFeign.listAllByQuery(query); + pq.getParams().setTypeSids(listResultBean.getData().stream().map(s->s.getSid()).collect(Collectors.toList())); + } + ResultBean> pagerVoResultBean = warehouseInventoryRecordFeign.goodsSales(pq); + for (WarehouseGoodsSalesReportVo record : pagerVoResultBean.getData().getRecords()) { + + BigDecimal bigDecimal=new BigDecimal(record.getAmount()); + if(bigDecimal.compareTo(new BigDecimal(0))!=1){ + record.setAmount(new BigDecimal(record.getCount()).multiply(new BigDecimal(record.getCost())).toString()); + record.setAverageCost(new BigDecimal(record.getAmount()).divide(new BigDecimal(record.getCount())).toString()); + } + ResultBean initialization1=new ResultBean<>(); + if(StringUtils.isBlank(record.getGoodsSpuSid())){ + ResultBean initialization = baseGoodsSkuFeign.initialization(record.getGoodsSkuSid()); + initialization1 = baseGoodsSpuFeign.initialization(initialization.getData().getGoodsSpuSid()); + record.setBarCode(initialization1.getData().getBarCode()); + record.setGoodsCode(initialization1.getData().getGoodsCode()); + }else{ + initialization1 = baseGoodsSpuFeign.initialization(record.getGoodsSpuSid()); + record.setBarCode(initialization1.getData().getBarCode()); + record.setGoodsCode(initialization1.getData().getGoodsCode()); + } + ResultBean extendBySkuSid = baseGoodsSkuExtendFeign.getExtendBySkuSid(record.getGoodsSkuSid()); + record.setCbdPrice(extendBySkuSid.getData().getCostPrice()); + record.setCbPrice(new BigDecimal(extendBySkuSid.getData().getCostPrice()).multiply(new BigDecimal(record.getCount())).toString()); + record.setMl(new BigDecimal(record.getAmount()).subtract(new BigDecimal(record.getCbPrice())).toString()); + record.setMll(new BigDecimal(record.getAmount()).subtract(new BigDecimal(record.getCbPrice())).divide(new BigDecimal(record.getCbPrice())).toString()); + if(StringUtils.isBlank(record.getBrandName())){ + ResultBean initialization3 = baseBrandInfoFeign.initialization(initialization1.getData().getBrandSid()); + record.setBrandSid(initialization3.getData().getSid()); + record.setBrandName(initialization3.getData().getBrandName()); + } + if(StringUtils.isBlank(record.getTypeName())){ + ResultBean initialization2 = baseGoodsTypeFeign.initialization(initialization1.getData().getGoodsTypeSid()); + record.setTypeName(initialization2.getData().getGoodsTypeName()); + record.setTypeSid(initialization2.getData().getSid()); + } + } + return pagerVoResultBean; + } + + public void customerSalesExport(WarehouseInventoryCountReportQuery pq) { + + List exportVoList = warehouseInventoryRecordFeign.customerSalesExport(pq); + for (WarehouseCustomerOutReportExcelVo record : exportVoList) { + BigDecimal bigDecimal=new BigDecimal(record.getAmount()); + if(bigDecimal.compareTo(new BigDecimal(0))!=1){ + record.setAmount(new BigDecimal(record.getCount()).multiply(new BigDecimal(record.getCost())).toString()); + } + ResultBean crmCustomerTempResultBean = crmCustomerTempFeign.fetchBySid(record.getCustomerSid()); + if(crmCustomerTempResultBean.getData()!=null){ + record.setCustomerCode(crmCustomerTempResultBean.getData().getCustomerNo()); + } + } + //定义导出的excel名字 + String excelName = "客户销售列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WarehouseCustomerOutReportExcelVo.class, response); + } + public void goodsSalesExport(WarehouseInventoryCountReportQuery pq) { + GoodsSpuQuery query=new GoodsSpuQuery(); + if(StringUtils.isNotBlank(query.getBrandSid())){ + query.setBrandSid(query.getBrandSid()); + } + if(StringUtils.isNotBlank(query.getTypeSid())){ + query.setTypeSid(query.getTypeSid()); + } + if(StringUtils.isNotBlank(query.getBrandSid())|| StringUtils.isNotBlank(query.getTypeSid())){ + ResultBean> listResultBean = baseGoodsSpuFeign.listAllByQuery(query); + pq.setTypeSids(listResultBean.getData().stream().map(s->s.getSid()).collect(Collectors.toList())); + } + List exportVoList = warehouseInventoryRecordFeign.goodsSalesExport(pq); + for (WarehouseGoodsSalesReportExcelVo record : exportVoList) { + BigDecimal bigDecimal=new BigDecimal(record.getAmount()); + if(bigDecimal.compareTo(new BigDecimal(0))!=1){ + record.setAmount(new BigDecimal(record.getCount()).multiply(new BigDecimal(record.getCost())).toString()); + record.setAverageCost(new BigDecimal(record.getAmount()).divide(new BigDecimal(record.getCount())).toString()); + } + ResultBean initialization1=new ResultBean<>(); + if(StringUtils.isBlank(record.getGoodsSpuSid())){ + ResultBean initialization = baseGoodsSkuFeign.initialization(record.getGoodsSkuSid()); + initialization1 = baseGoodsSpuFeign.initialization(initialization.getData().getGoodsSpuSid()); + record.setBarCode(initialization1.getData().getBarCode()); + record.setGoodsCode(initialization1.getData().getGoodsCode()); + }else{ + initialization1 = baseGoodsSpuFeign.initialization(record.getGoodsSpuSid()); + record.setBarCode(initialization1.getData().getBarCode()); + record.setGoodsCode(initialization1.getData().getGoodsCode()); + } + ResultBean extendBySkuSid = baseGoodsSkuExtendFeign.getExtendBySkuSid(record.getGoodsSkuSid()); + record.setCbdPrice(extendBySkuSid.getData().getCostPrice()); + record.setCbPrice(new BigDecimal(extendBySkuSid.getData().getCostPrice()).multiply(new BigDecimal(record.getCount())).toString()); + record.setMl(new BigDecimal(record.getAmount()).subtract(new BigDecimal(record.getCbPrice())).toString()); + record.setMll(new BigDecimal(record.getAmount()).subtract(new BigDecimal(record.getCbPrice())).divide(new BigDecimal(record.getCbPrice())).toString()); + if(StringUtils.isBlank(record.getBrandName())){ + ResultBean initialization3 = baseBrandInfoFeign.initialization(initialization1.getData().getBrandSid()); + record.setBrandSid(initialization3.getData().getSid()); + record.setBrandName(initialization3.getData().getBrandName()); + } + if(StringUtils.isBlank(record.getTypeName())){ + ResultBean initialization2 = baseGoodsTypeFeign.initialization(initialization1.getData().getGoodsTypeSid()); + record.setTypeName(initialization2.getData().getGoodsTypeName()); + record.setTypeSid(initialization2.getData().getSid()); + } + } + //定义导出的excel名字 + String excelName = "商品销售列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WarehouseGoodsSalesReportExcelVo.class, response); + } public ResultBean deleteBySids(String[] sids) { return smsSalesBillFeign.delBySids(sids); } diff --git a/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsskuextend/BaseGoodsSkuExtendFeign.java b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsskuextend/BaseGoodsSkuExtendFeign.java new file mode 100644 index 0000000..9843f5f --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsskuextend/BaseGoodsSkuExtendFeign.java @@ -0,0 +1,25 @@ +package com.yxt.oms.feign.goods.basegoodsskuextend; + +import com.yxt.common.core.result.ResultBean; +import com.yxt.oms.biz.func.basegoodsskuextend.BaseGoodsSkuExtendVo; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/20 + **/ +@FeignClient( + contextId = "yss-common-goods-GoodsSkuExtend", + name = "ss-common-goods", + path = "/apiadmin/base/basegoodsskuextend", + fallback = BaseGoodsSkuExtendFeignFallback.class) +public interface BaseGoodsSkuExtendFeign { + + @ApiOperation("获取扩展") + @GetMapping("/getExtendBySkuSid/{sid}") + public ResultBean getExtendBySkuSid(@PathVariable("sid") String sid); +} diff --git a/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsskuextend/BaseGoodsSkuExtendFeignFallback.java b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsskuextend/BaseGoodsSkuExtendFeignFallback.java new file mode 100644 index 0000000..2c2d78b --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsskuextend/BaseGoodsSkuExtendFeignFallback.java @@ -0,0 +1,19 @@ +package com.yxt.oms.feign.goods.basegoodsskuextend; + +import com.yxt.common.core.result.ResultBean; +import com.yxt.oms.biz.func.basegoodsskuextend.BaseGoodsSkuExtendVo; +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/20 + **/ +@Component +public class BaseGoodsSkuExtendFeignFallback implements BaseGoodsSkuExtendFeign { + + @Override + public ResultBean getExtendBySkuSid(String sid) { + return null; + } +} diff --git a/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/BaseGoodsSpuFeign.java b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/BaseGoodsSpuFeign.java index b0e43a1..4285c0c 100644 --- a/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/BaseGoodsSpuFeign.java +++ b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/BaseGoodsSpuFeign.java @@ -64,4 +64,7 @@ public interface BaseGoodsSpuFeign { @ApiOperation("产品管理获取商品") @PostMapping("/getGoodsForProduct") public ResultBean> getGoodsForProduct(@RequestBody ProductGoodsQuery query); + @ApiOperation("查询所有") + @PostMapping("/listAllByQuery") + public ResultBean> listAllByQuery(@RequestBody GoodsSpuQuery query); } diff --git a/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/BaseGoodsSpuFeignFallback.java b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/BaseGoodsSpuFeignFallback.java index ab8c13f..8253de9 100644 --- a/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/BaseGoodsSpuFeignFallback.java +++ b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/BaseGoodsSpuFeignFallback.java @@ -77,4 +77,9 @@ public class BaseGoodsSpuFeignFallback implements BaseGoodsSpuFeign { public ResultBean> getGoodsForProduct(ProductGoodsQuery query) { return null; } + + @Override + public ResultBean> listAllByQuery(GoodsSpuQuery query) { + return null; + } } diff --git a/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/GoodsSpuQuery.java b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/GoodsSpuQuery.java new file mode 100644 index 0000000..d781995 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/GoodsSpuQuery.java @@ -0,0 +1,44 @@ +package com.yxt.oms.feign.goods.basegoodsspu; + +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 GoodsSpuQuery implements Query { + //商品编码 + private String goodsCode; + //商品名称 + private String goodsName; + //条形码 + private String barCode; + //规格编码 + private String goodsSkuCode; + //规格型号 + private String title; + //具体规格 + private String ownSpec; + //品牌 + private String brandName; + //厂家 + private String manufacturerName; + //厂家货号 + private String manufacturerCode; + + private String userOrgSid; + private String createOrgSid;//创建组织sid + private String orgLevelKey;//权限等级 + @ApiModelProperty("菜单路由") + private String menuUrl; + @ApiModelProperty("组织全路径sid") + private String orgPath; + @ApiModelProperty("用户sid") + private String userSid; + private int index; + private String brandSid; + private String typeSid; +} diff --git a/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/GoodsSpuVo.java b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/GoodsSpuVo.java new file mode 100644 index 0000000..bb80423 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/goods/basegoodsspu/GoodsSpuVo.java @@ -0,0 +1,73 @@ +package com.yxt.oms.feign.goods.basegoodsspu; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import com.yxt.oms.biz.func.basegoodsspudetail.BaseGoodsSpuDetailVo; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class GoodsSpuVo 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 goodsCode;//商品代码 + private String barCode;//条形码 + private String goodsName;//商品名称 + private String subTitle;//商品名称 + private String goodsPY;//拼音缩写 + private String goodsShortName;//商品简称 + private String goodsTypeSid;//商品分类sid + private String brandSid;//品牌sid + private String manufacturerSid;//厂家sid + private String goodsUnitSid;//商品单位sid + private String goodsUnitName;//商品单位名称 + private String taxRate;//税率 + private String shelfLife;//保质期天 + private String nationalStandardCode;//国标码 + private String sortNo;//排序 + private String externalCode;//外部编码 + private String factoryCode;//厂家货号 + private String isListed;//是否上架 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + private BaseGoodsSpuDetailVo baseGoodsSpuDetail; +// private List baseGoodsSkus; + private String brandName; + private String manufacturerName; + private String typeName; + private String userSid; + private String orgPath; + private String goodsLevelKey;//商品等级Key + private String goodsLevelValue;//商品等级value(数据字典,如A、B、C) + private String goodsClassKey;//商品类型key + private String goodsClassValue;//商品类型value(数据字典,如正常商品、赠品、耗材等) + private String aidBarCode;//辅助条码 + private String lengthUnit;//长度单位 + private String volumeUnit;//体积单位 + private String weightUnit;//重量单位 + private double weight;//重量 + private double volume;//体积(长*宽*高) + private double vLength;//长 + private double vWidth;//宽 + private double vHeight;//高 + private String packageSpecs;//包装规格(如1*30包,1*300ml) + private double quantityOfPackage;//包装内数量 + private String packUnit;//包装单位 + private BigDecimal packPrice;//包装单价 +} diff --git a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseCustomerOutReportExcelVo.java b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseCustomerOutReportExcelVo.java new file mode 100644 index 0000000..b3ac8fd --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseCustomerOutReportExcelVo.java @@ -0,0 +1,25 @@ +package com.yxt.oms.feign.warehouse.warehouseinventoryrecord; + +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2025/1/7 9:41 + */ +@Data +public class WarehouseCustomerOutReportExcelVo { + private String sid; + private String customerSid; + @ExportEntityMap(CnName = "客户编码", EnName = "customerCode") + private String customerCode; + @ExportEntityMap(CnName = "客户名称", EnName = "customerName") + private String customerName;//客户名称 + @ExportEntityMap(CnName = "销售数量", EnName = "amount") + private String amount;//销售数量 + @ExportEntityMap(CnName = "销售金额", EnName = "count") + private String count;//销售金额 + @ExportEntityMap(CnName = "运费", EnName = "shippingFee") + private String shippingFee; //运费 + private String cost; +} diff --git a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsPurchaseReportExcelVo.java b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsPurchaseReportExcelVo.java new file mode 100644 index 0000000..9fa1dde --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsPurchaseReportExcelVo.java @@ -0,0 +1,36 @@ +package com.yxt.oms.feign.warehouse.warehouseinventoryrecord; + +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2025/1/7 14:19 + */ +@Data +public class WarehouseGoodsPurchaseReportExcelVo { + private String goodsSkuSid; + private String goodsSpuSid; + @ExportEntityMap(CnName = "商品编码", EnName = "goodsCode") + private String goodsCode; + @ExportEntityMap(CnName = "条码", EnName = "barCode") + private String barCode; + @ExportEntityMap(CnName = "商品名称", EnName = "goodsName") + private String goodsName; + @ExportEntityMap(CnName = "规格编码", EnName = "goodsSkuCode") + private String goodsSkuCode; + @ExportEntityMap(CnName = "规格型号", EnName = "title") + private String title; + private String typeSid; + @ExportEntityMap(CnName = "分类", EnName = "typeName") + private String typeName; + private String brandSid; + @ExportEntityMap(CnName = "品牌", EnName = "brandName") + private String brandName; + @ExportEntityMap(CnName = "数量", EnName = "count") + private String count; + @ExportEntityMap(CnName = "单价", EnName = "cost") + private String cost; + @ExportEntityMap(CnName = "金额", EnName = "amount") + private String amount; +} diff --git a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsPurchaseReportVo.java b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsPurchaseReportVo.java new file mode 100644 index 0000000..649569f --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsPurchaseReportVo.java @@ -0,0 +1,26 @@ +package com.yxt.oms.feign.warehouse.warehouseinventoryrecord; + +import lombok.Data; + +/** + * @author wangpengfei + * @date 2025/1/7 10:25 + */ +@Data +public class WarehouseGoodsPurchaseReportVo { + private String goodsSkuSid; + private String goodsSpuSid; + private String goodsCode;// + private String barCode;// + private String goodsName;// + private String goodsSkuCode;// + private String title;// + private String typeSid; + private String typeName;// + private String brandSid; + private String brandName;// + private String count;// + private String cost;// + private String amount;// + +} diff --git a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsSalesReportExcelVo.java b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsSalesReportExcelVo.java new file mode 100644 index 0000000..deff4ac --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsSalesReportExcelVo.java @@ -0,0 +1,45 @@ +package com.yxt.oms.feign.warehouse.warehouseinventoryrecord; + +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2025/1/7 17:10 + */ +@Data +public class WarehouseGoodsSalesReportExcelVo { + private String goodsSkuSid; + private String goodsSpuSid; + @ExportEntityMap(CnName = "商品编码", EnName = "goodsCode") + private String goodsCode; + @ExportEntityMap(CnName = "条码", EnName = "barCode") + private String barCode; + @ExportEntityMap(CnName = "商品名称", EnName = "goodsName") + private String goodsName; + @ExportEntityMap(CnName = "规格编码", EnName = "goodsSkuCode") + private String goodsSkuCode; + @ExportEntityMap(CnName = "规格型号", EnName = "title") + private String title; + private String typeSid; + @ExportEntityMap(CnName = "分类", EnName = "typeName") + private String typeName; + private String brandSid; + @ExportEntityMap(CnName = "品牌", EnName = "brandName") + private String brandName; + @ExportEntityMap(CnName = "数量", EnName = "count") + private String count; + @ExportEntityMap(CnName = "平均金额", EnName = "averageCost") + private String averageCost; + @ExportEntityMap(CnName = "金额", EnName = "amount") + private String amount; + @ExportEntityMap(CnName = "成本单价", EnName = "cbPrice") + private String cbPrice; + @ExportEntityMap(CnName = "成本", EnName = "cbdPrice") + private String cbdPrice; + @ExportEntityMap(CnName = "毛利", EnName = "ml") + private String ml; + @ExportEntityMap(CnName = "毛利率", EnName = "mll") + private String mll; + private String cost; +} diff --git a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsSalesReportVo.java b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsSalesReportVo.java new file mode 100644 index 0000000..a883d93 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseGoodsSalesReportVo.java @@ -0,0 +1,30 @@ +package com.yxt.oms.feign.warehouse.warehouseinventoryrecord; + +import lombok.Data; + +/** + * @author wangpengfei + * @date 2025/1/7 15:29 + */ +@Data +public class WarehouseGoodsSalesReportVo { + private String goodsSkuSid; + private String goodsSpuSid; + private String goodsCode; + private String barCode; + private String goodsName; + private String goodsSkuCode; + private String title; + private String typeSid; + private String typeName; + private String brandSid; + private String brandName; + private String count; + private String averageCost; + private String amount; + private String cbPrice; + private String cbdPrice; + private String ml; + private String mll; + private String cost; +} diff --git a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseInventoryCountReportQuery.java b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseInventoryCountReportQuery.java index d26fd4d..7b614b1 100644 --- a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseInventoryCountReportQuery.java +++ b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseInventoryCountReportQuery.java @@ -4,6 +4,8 @@ package com.yxt.oms.feign.warehouse.warehouseinventoryrecord; import com.yxt.common.core.query.Query; import lombok.Data; +import java.util.List; + /** * @author Fan * @description @@ -18,5 +20,12 @@ public class WarehouseInventoryCountReportQuery implements Query { private String orgPath; private String customerName; private String customerCode; - + private String warehouseSid; + private String goodsSid; + private String supplierSid; +// private String + private String brandSid; + private String typeSid; + private List typeSids; + private List brandSids; } diff --git a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseInventoryRecordFeign.java b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseInventoryRecordFeign.java index 27cce19..b2e00fe 100644 --- a/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseInventoryRecordFeign.java +++ b/oms/src/main/java/com/yxt/oms/feign/warehouse/warehouseinventoryrecord/WarehouseInventoryRecordFeign.java @@ -11,6 +11,8 @@ 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; + /** * Project: anrui_portal(门户建设)
* File: SysRoleFeign.java
@@ -34,5 +36,20 @@ public interface WarehouseInventoryRecordFeign { @ApiOperation("客户销售统计报表") @PostMapping("/customerSales") public ResultBean> customerSales(@RequestBody PagerQuery pq); + @ApiOperation("客户销售统计报表") + @PostMapping("/customerSalesExport") + public List customerSalesExport(@RequestBody WarehouseInventoryCountReportQuery pq); + @ApiOperation("商品采购统计报表") + @PostMapping("/goodsPurchase") + public ResultBean> goodsPurchase(@RequestBody PagerQuery pq); + @PostMapping("/goodsPurchaseExport") + @ApiOperation(value = "客户销售统计报表导出") + public List goodsPurchaseExport(@RequestBody WarehouseInventoryCountReportQuery query); + @ApiOperation("商品销售统计报表") + @PostMapping("/goodsSales") + public ResultBean> goodsSales(@RequestBody PagerQuery pq); + @ApiOperation("商品销售统计报表") + @PostMapping("/goodsSalesExport") + public List goodsSalesExport(@RequestBody WarehouseInventoryCountReportQuery pq); }