|
|
@ -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) <br/> |
|
|
@ -83,6 +99,19 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
private WarehouseInventoryRecordFeign warehouseInventoryRecordFeign; |
|
|
|
@Autowired |
|
|
|
private CrmCustomerTempFeign crmCustomerTempFeign; |
|
|
|
@Autowired |
|
|
|
HttpServletResponse response; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private BaseGoodsSpuFeign baseGoodsSpuFeign; |
|
|
|
@Autowired |
|
|
|
private BaseGoodsSkuFeign baseGoodsSkuFeign; |
|
|
|
@Autowired |
|
|
|
BaseGoodsTypeFeign baseGoodsTypeFeign; |
|
|
|
@Autowired |
|
|
|
BaseBrandInfoFeign baseBrandInfoFeign; |
|
|
|
@Autowired |
|
|
|
BaseGoodsSkuExtendFeign baseGoodsSkuExtendFeign; |
|
|
|
|
|
|
|
private QueryWrapper<SmsSalesBill> createQueryWrapper(SmsSalesBillQuery query) { |
|
|
|
// todo: 这里根据具体业务调整查询条件
|
|
|
@ -182,7 +211,137 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
} |
|
|
|
return warehouseInventoryRecordFeign.customerSales(pq); |
|
|
|
} |
|
|
|
public ResultBean<PagerVo<WarehouseGoodsSalesReportVo>> goodsSales(PagerQuery<WarehouseInventoryCountReportQuery> 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<List<GoodsSpuVo>> listResultBean = baseGoodsSpuFeign.listAllByQuery(query); |
|
|
|
pq.getParams().setTypeSids(listResultBean.getData().stream().map(s->s.getSid()).collect(Collectors.toList())); |
|
|
|
} |
|
|
|
ResultBean<PagerVo<WarehouseGoodsSalesReportVo>> 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<BaseGoodsSpuVo> initialization1=new ResultBean<>(); |
|
|
|
if(StringUtils.isBlank(record.getGoodsSpuSid())){ |
|
|
|
ResultBean<BaseGoodsSkuVo> 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<BaseGoodsSkuExtendVo> 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<BaseBrandInfoVo> initialization3 = baseBrandInfoFeign.initialization(initialization1.getData().getBrandSid()); |
|
|
|
record.setBrandSid(initialization3.getData().getSid()); |
|
|
|
record.setBrandName(initialization3.getData().getBrandName()); |
|
|
|
} |
|
|
|
if(StringUtils.isBlank(record.getTypeName())){ |
|
|
|
ResultBean<BaseGoodsTypeVo> initialization2 = baseGoodsTypeFeign.initialization(initialization1.getData().getGoodsTypeSid()); |
|
|
|
record.setTypeName(initialization2.getData().getGoodsTypeName()); |
|
|
|
record.setTypeSid(initialization2.getData().getSid()); |
|
|
|
} |
|
|
|
} |
|
|
|
return pagerVoResultBean; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void customerSalesExport(WarehouseInventoryCountReportQuery pq) { |
|
|
|
|
|
|
|
List<WarehouseCustomerOutReportExcelVo> 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<CrmCustomerTemp> 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<List<GoodsSpuVo>> listResultBean = baseGoodsSpuFeign.listAllByQuery(query); |
|
|
|
pq.setTypeSids(listResultBean.getData().stream().map(s->s.getSid()).collect(Collectors.toList())); |
|
|
|
} |
|
|
|
List<WarehouseGoodsSalesReportExcelVo> 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<BaseGoodsSpuVo> initialization1=new ResultBean<>(); |
|
|
|
if(StringUtils.isBlank(record.getGoodsSpuSid())){ |
|
|
|
ResultBean<BaseGoodsSkuVo> 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<BaseGoodsSkuExtendVo> 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<BaseBrandInfoVo> initialization3 = baseBrandInfoFeign.initialization(initialization1.getData().getBrandSid()); |
|
|
|
record.setBrandSid(initialization3.getData().getSid()); |
|
|
|
record.setBrandName(initialization3.getData().getBrandName()); |
|
|
|
} |
|
|
|
if(StringUtils.isBlank(record.getTypeName())){ |
|
|
|
ResultBean<BaseGoodsTypeVo> 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); |
|
|
|
} |
|
|
|