15 changed files with 464 additions and 4 deletions
@ -0,0 +1,30 @@ |
|||
package com.yxt.supervise.report.api.dailysalesreport; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 11:35 |
|||
*/ |
|||
@ApiModel(value = "每日销售日报表", description = "每日销售日报表") |
|||
@TableName("daily_sales_report") |
|||
@Data |
|||
public class DailySalesReport { |
|||
private String id; |
|||
private String sid; |
|||
//联网连锁店销售总额
|
|||
private double lwlsdTotalSales; |
|||
//连锁内加盟
|
|||
private double lsnjnTotalSales; |
|||
//配送中心
|
|||
private double pszxTotalSales; |
|||
//连锁外加盟
|
|||
private double lswjmTotalSales; |
|||
//36524集团报烟门店仓
|
|||
private double bymdcTotalSales; |
|||
//烟草连锁外加盟
|
|||
private double yclswjmTotalSales; |
|||
private String orderDate; |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.yxt.supervise.report.api.dailysalesreport; |
|||
|
|||
import com.yxt.common.core.dto.Dto; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 11:35 |
|||
*/ |
|||
@Data |
|||
public class DailySalesReportDto implements Dto { |
|||
private String id; |
|||
private String sid; |
|||
private double lwlsdTotalSales; |
|||
private double lsnjnTotalSales; |
|||
private String pszxTotalSales; |
|||
private String lswjmTotalSales; |
|||
private String bymdcTotalSales; |
|||
private String yclswjmTotalSales; |
|||
private String orderDate; |
|||
} |
@ -0,0 +1,23 @@ |
|||
package com.yxt.supervise.report.api.dailysalesreport; |
|||
|
|||
import com.yxt.common.core.query.Query; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 11:35 |
|||
*/ |
|||
@Data |
|||
public class DailySalesReportQuery implements Query { |
|||
private String id; |
|||
private String sid; |
|||
private double lwlsdTotalSales; |
|||
private double lsnjnTotalSales; |
|||
private String pszxTotalSales; |
|||
private String lswjmTotalSales; |
|||
private String bymdcTotalSales; |
|||
private String yclswjmTotalSales; |
|||
private String orderDate; |
|||
private String endDate; |
|||
private String startDate; |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.yxt.supervise.report.api.dailysalesreport; |
|||
|
|||
import com.yxt.common.core.vo.Vo; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 11:35 |
|||
*/ |
|||
@Data |
|||
public class DailySalesReportVo implements Vo { |
|||
private String id; |
|||
private String sid; |
|||
private double lwlsdTotalSales; |
|||
private double lsnjnTotalSales; |
|||
private String pszxTotalSales; |
|||
private String lswjmTotalSales; |
|||
private String bymdcTotalSales; |
|||
private String yclswjmTotalSales; |
|||
private String orderDate; |
|||
} |
@ -0,0 +1,13 @@ |
|||
package com.yxt.supervise.report.api.dailysalesreport; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 14:36 |
|||
*/ |
|||
@Data |
|||
public class FinancialData { |
|||
private String totalPrice; |
|||
private String name; |
|||
} |
@ -0,0 +1,15 @@ |
|||
package com.yxt.supervise.report.api.dailysalesreport; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 14:37 |
|||
*/ |
|||
@Data |
|||
public class ListSalesChannelData { |
|||
private String deductionAccountsReceivable; |
|||
private String salesChannelCategory; |
|||
private String totalAmount; |
|||
private String accountsReceivable; |
|||
} |
@ -0,0 +1,11 @@ |
|||
package com.yxt.supervise.report.api.dailysalesreport; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 14:39 |
|||
*/ |
|||
@Data |
|||
public class financialAnalysisChartData { |
|||
} |
@ -0,0 +1,25 @@ |
|||
package com.yxt.supervise.report.biz.dailysalesreport; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.baomidou.mybatisplus.core.toolkit.Constants; |
|||
import com.yxt.supervise.report.api.dailysalesreport.DailySalesReport; |
|||
import com.yxt.supervise.report.api.dailysalesreport.DailySalesReportVo; |
|||
import org.apache.ibatis.annotations.Delete; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.apache.ibatis.annotations.Select; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 13:40 |
|||
*/ |
|||
@Mapper |
|||
public interface DailySalesReportMapper extends BaseMapper<DailySalesReport> { |
|||
@Select("select * from daily_sales_report") |
|||
List<DailySalesReport> getSalesByDate(); |
|||
} |
@ -0,0 +1,8 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.yxt.supervise.report.biz.dailysalesreport.DailySalesReportMapper"> |
|||
<!-- <where> ${ew.sqlSegment} </where>--> |
|||
<!-- ${ew.customSqlSegment} --> |
|||
|
|||
|
|||
</mapper> |
@ -0,0 +1,41 @@ |
|||
package com.yxt.supervise.report.biz.dailysalesreport; |
|||
|
|||
import com.yxt.common.core.query.PagerQuery; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import com.yxt.supervise.report.api.dailysalesreport.DailySalesReportDto; |
|||
import com.yxt.supervise.report.api.dailysalesreport.DailySalesReportQuery; |
|||
import com.yxt.supervise.report.api.dailysalesreport.DailySalesReportVo; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.text.ParseException; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/4/21 11:18 |
|||
*/ |
|||
@RestController |
|||
@RequestMapping("/DailySalesReport") |
|||
public class DailySalesReportRest { |
|||
|
|||
@Autowired |
|||
DailySalesReportService DailySalesReportService; |
|||
|
|||
@PostMapping("/saveSales") |
|||
public ResultBean<DailySalesReportVo> saveSales(@RequestParam("orderDate") String orderDate){ |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
return DailySalesReportService.saveSales(orderDate); |
|||
} |
|||
@PostMapping("/getSalesByDate") |
|||
public ResultBean<DailySalesReportVo> getSalesByDate(@RequestBody DailySalesReportQuery pq){ |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
return DailySalesReportService.getSalesByDate(pq); |
|||
} |
|||
@PostMapping("/test") |
|||
public ResultBean test( ) throws ParseException { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
DailySalesReportService.test(); |
|||
return rb; |
|||
} |
|||
} |
@ -0,0 +1,164 @@ |
|||
package com.yxt.supervise.report.biz.dailysalesreport; |
|||
|
|||
import cn.hutool.core.date.DateUtil; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.yxt.common.base.service.MybatisBaseService; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import com.yxt.supervise.report.api.dailysalesreport.DailySalesReport; |
|||
import com.yxt.supervise.report.api.dailysalesreport.DailySalesReportQuery; |
|||
import com.yxt.supervise.report.api.dailysalesreport.FinancialData; |
|||
import com.yxt.supervise.report.api.dailysalesreport.ListSalesChannelData; |
|||
import com.yxt.supervise.report.ds.supplychain.SupplyChainMapper; |
|||
import org.junit.Test; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.PostConstruct; |
|||
import java.text.ParseException; |
|||
import java.text.SimpleDateFormat; |
|||
import java.util.*; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/4/21 11:18 |
|||
*/ |
|||
@Service |
|||
public class DailySalesReportService extends MybatisBaseService<DailySalesReportMapper, DailySalesReport> { |
|||
@Autowired |
|||
SupplyChainMapper supplyChainMapper; |
|||
|
|||
|
|||
public ResultBean saveSales(String orderDate) { |
|||
ResultBean rb=new ResultBean(); |
|||
DailySalesReport dailySalesReport=new DailySalesReport(); |
|||
dailySalesReport.setSid(UUID.randomUUID().toString()); |
|||
double lwlsd=supplyChainMapper.amountOfLsdOnDay(orderDate); |
|||
dailySalesReport.setLwlsdTotalSales(lwlsd); |
|||
|
|||
double lsnjn=supplyChainMapper.amountOfLsnjmOnDay(orderDate); |
|||
dailySalesReport.setLsnjnTotalSales(lsnjn); |
|||
|
|||
double pszx=supplyChainMapper.amountOfPszxDay(orderDate); |
|||
dailySalesReport.setPszxTotalSales(pszx); |
|||
|
|||
double lswjm=supplyChainMapper.amountOfLswjmDay(orderDate); |
|||
dailySalesReport.setLswjmTotalSales(lswjm); |
|||
|
|||
double bymdc=supplyChainMapper.amountOfYcDay(orderDate); |
|||
dailySalesReport.setBymdcTotalSales(bymdc); |
|||
|
|||
double yclsw=supplyChainMapper.amountOfDayJmd(orderDate); |
|||
dailySalesReport.setYclswjmTotalSales(yclsw); |
|||
dailySalesReport.setOrderDate(orderDate); |
|||
baseMapper.insert(dailySalesReport); |
|||
return rb; |
|||
} |
|||
|
|||
public ResultBean getSalesByDate(DailySalesReportQuery pq) { |
|||
ResultBean rb=new ResultBean<>(); |
|||
List<DailySalesReport> dailySalesReports=baseMapper.getSalesByDate(); |
|||
List<List<String>> financialAnalysisChartData=convert(dailySalesReports); |
|||
Map<String,Object> map=new HashMap<>(); |
|||
map.put("financialAnalysisChartData",financialAnalysisChartData); |
|||
List<ListSalesChannelData> listSalesChannelData=salesChanne(pq.getOrderDate()); |
|||
map.put("listSalesChannelData",listSalesChannelData); |
|||
// List<FinancialData> financialData=new ArrayList<>();
|
|||
// FinancialData financialData1=new FinancialData();
|
|||
// financialData1.setName("销售商品收到的现金(元)");
|
|||
// financialData1.setTotalPrice("637774.16");
|
|||
// FinancialData financialData2=new FinancialData();
|
|||
// financialData2.setName("销售商品收到的现金(元)");
|
|||
// financialData2.setTotalPrice("637774.16");
|
|||
// financialData.add(financialData1);
|
|||
// financialData.add(financialData2);
|
|||
// map.put("financialData",financialData);
|
|||
return rb.success().setData(map); |
|||
} |
|||
public List<ListSalesChannelData> salesChanne(String orderDate){ |
|||
List<ListSalesChannelData> list=new ArrayList<>(); |
|||
double lwlsdTotalSales=baseMapper.selectOne(new QueryWrapper<DailySalesReport>().eq("orderDate",orderDate)).getLwlsdTotalSales(); |
|||
ListSalesChannelData lwlsd=new ListSalesChannelData(); |
|||
lwlsd.setDeductionAccountsReceivable(String.valueOf(lwlsdTotalSales)); |
|||
lwlsd.setSalesChannelCategory("连网连锁店"); |
|||
lwlsd.setTotalAmount(String.valueOf(lwlsdTotalSales)); |
|||
lwlsd.setAccountsReceivable("0"); |
|||
double lsnjnTotalSales=baseMapper.selectOne(new QueryWrapper<DailySalesReport>().eq("orderDate",orderDate)).getLsnjnTotalSales(); |
|||
ListSalesChannelData lsnjn=new ListSalesChannelData(); |
|||
lsnjn.setDeductionAccountsReceivable(String.valueOf(lsnjnTotalSales)); |
|||
lsnjn.setSalesChannelCategory("连锁内加盟"); |
|||
lsnjn.setTotalAmount(String.valueOf(lsnjnTotalSales)); |
|||
lsnjn.setAccountsReceivable("0"); |
|||
double pszxTotalSales=baseMapper.selectOne(new QueryWrapper<DailySalesReport>().eq("orderDate",orderDate)).getPszxTotalSales(); |
|||
ListSalesChannelData pszx=new ListSalesChannelData(); |
|||
pszx.setDeductionAccountsReceivable(String.valueOf(pszxTotalSales)); |
|||
pszx.setSalesChannelCategory("配送中心"); |
|||
pszx.setTotalAmount(String.valueOf(pszxTotalSales)); |
|||
pszx.setAccountsReceivable("0"); |
|||
double lswjmTotalSales=baseMapper.selectOne(new QueryWrapper<DailySalesReport>().eq("orderDate",orderDate)).getLswjmTotalSales(); |
|||
ListSalesChannelData lswjm=new ListSalesChannelData(); |
|||
lswjm.setDeductionAccountsReceivable(String.valueOf(lswjmTotalSales)); |
|||
lswjm.setSalesChannelCategory("连锁外加盟"); |
|||
lswjm.setTotalAmount(String.valueOf(lswjmTotalSales)); |
|||
lswjm.setAccountsReceivable("0"); |
|||
double bymdcTotalSales=baseMapper.selectOne(new QueryWrapper<DailySalesReport>().eq("orderDate",orderDate)).getBymdcTotalSales(); |
|||
ListSalesChannelData bymdc=new ListSalesChannelData(); |
|||
bymdc.setDeductionAccountsReceivable(String.valueOf(bymdcTotalSales)); |
|||
bymdc.setSalesChannelCategory("36524集团报烟门店仓"); |
|||
bymdc.setTotalAmount(String.valueOf(bymdcTotalSales)); |
|||
bymdc.setAccountsReceivable("0"); |
|||
double yclswjmTotalSales=baseMapper.selectOne(new QueryWrapper<DailySalesReport>().eq("orderDate",orderDate)).getYclswjmTotalSales(); |
|||
ListSalesChannelData yclswjm=new ListSalesChannelData(); |
|||
yclswjm.setDeductionAccountsReceivable(String.valueOf(yclswjmTotalSales)); |
|||
yclswjm.setSalesChannelCategory("烟草连锁外加盟"); |
|||
yclswjm.setTotalAmount(String.valueOf(yclswjmTotalSales)); |
|||
yclswjm.setAccountsReceivable("0"); |
|||
list.add(lwlsd); |
|||
list.add(lsnjn); |
|||
list.add(pszx); |
|||
list.add(lswjm); |
|||
list.add(bymdc); |
|||
list.add(yclswjm); |
|||
return list; |
|||
} |
|||
public List<List<String>> convert(List<DailySalesReport> list){ |
|||
List<List<String>> lists=new ArrayList<>(); |
|||
List<String> date=new ArrayList<>(); |
|||
date.add("日期"); |
|||
date.add("连网连锁店"); |
|||
date.add("连锁内加盟"); |
|||
date.add("配送中心"); |
|||
date.add("连锁外加盟"); |
|||
date.add("36524集团报烟门店仓"); |
|||
date.add("烟草连锁外加盟"); |
|||
lists.add(date); |
|||
for(DailySalesReport dailySalesReport:list){ |
|||
date.add(dailySalesReport.getOrderDate()); |
|||
date.add(String.valueOf(dailySalesReport.getLwlsdTotalSales())); |
|||
date.add(String.valueOf(dailySalesReport.getLsnjnTotalSales())); |
|||
date.add(String.valueOf(dailySalesReport.getPszxTotalSales())); |
|||
date.add(String.valueOf(dailySalesReport.getLswjmTotalSales())); |
|||
date.add(String.valueOf(dailySalesReport.getBymdcTotalSales())); |
|||
date.add(String.valueOf(dailySalesReport.getYclswjmTotalSales())); |
|||
} |
|||
return lists; |
|||
} |
|||
|
|||
public boolean test() throws ParseException { |
|||
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); |
|||
//String date=ft.format(new Date()-1);
|
|||
//昨天时间
|
|||
Date date= DateUtil.yesterday(); |
|||
//结束时间
|
|||
String d="2023-07-01"; |
|||
Date date1=ft.parse(d); |
|||
while (date1.before(date)){ |
|||
Calendar calendar = Calendar.getInstance(); |
|||
calendar.setTime(date); |
|||
calendar.add(Calendar.DAY_OF_MONTH, -1); |
|||
date = calendar.getTime(); |
|||
System.out.println(ft.format(date)); |
|||
saveSales(ft.format(date)); |
|||
} |
|||
return true; |
|||
} |
|||
} |
@ -0,0 +1,40 @@ |
|||
package com.yxt.supervise.report.ds.supplychain; |
|||
|
|||
import com.baomidou.dynamic.datasource.annotation.DS; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.yxt.supervise.report.ds.rms.RiskAlarm; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.apache.ibatis.annotations.Select; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 14:05 |
|||
*/ |
|||
@DS("supplychain") |
|||
@Mapper |
|||
public interface SupplyChainMapper extends BaseMapper<RiskAlarm> { |
|||
@Select("select CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount from ( " + |
|||
" select gs.saleNum,gs.salePrice from gd_sales gs left join store_index si on gs.storeCode=si.code " + |
|||
" where gs.dataDate=#{dataDate} and si.`type` ='连网连锁店' ) t ") |
|||
double amountOfLsdOnDay(@Param("dataDate") String orderDate); |
|||
|
|||
@Select("select CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount from ( " + |
|||
" select gs.saleNum,gs.salePrice from gd_sales gs left join store_index si on gs.storeCode=si.code " + |
|||
" where gs.dataDate=#{dataDate} and si.`type` ='连锁内加盟' ) t ") |
|||
double amountOfLsnjmOnDay(@Param("dataDate") String orderDate); |
|||
|
|||
@Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_wholesale where dataDate=#{dataDate} ") |
|||
double amountOfPszxDay(String orderDate); |
|||
|
|||
@Select("SELECT CONVERT(IFNULL(sum(colq16),0),DECIMAL(12,2)) as amount FROM gd_instorage_jmd where orderDate=#{orderDate} ") |
|||
double amountOfLswjmDay(@Param("orderDate") String orderDate); |
|||
|
|||
@Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_sales_yc where dataDate=#{dataDate}") |
|||
double amountOfYcDay(@Param("dataDate") String orderDate); |
|||
|
|||
@Select("select CONVERT(IFNULL(sum(t.colq16),0),DECIMAL(12,2)) as amount from ( " + |
|||
" select gig.* from gd_instorage_yc gig left join store_index si on gig.colb1=si.code " + |
|||
" where gig.orderDate=#{orderDate} and (si.`type` ='连锁外加盟(销配结算)' OR si.`type` ='连锁外加盟(销配结算)' ) ) t ") |
|||
double amountOfDayJmd(@Param("orderDate") String orderDate); |
|||
} |
@ -0,0 +1,51 @@ |
|||
package com.yxt.supervise.report.biz.dailysalesreport; |
|||
|
|||
import cn.hutool.Hutool; |
|||
import cn.hutool.core.date.DateUtil; |
|||
import com.yxt.supervise.report.biz.messagepushlog.MessagePushLogService; |
|||
import com.yxt.supervise.report.wx.SuperviseWxMessSender; |
|||
import junit.framework.TestCase; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import javax.annotation.PostConstruct; |
|||
import java.text.ParseException; |
|||
import java.text.SimpleDateFormat; |
|||
import java.util.Calendar; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @author wangpengfei |
|||
* @date 2023/9/6 15:18 |
|||
*/ |
|||
@Component |
|||
public class DailySalesReportServiceTest extends TestCase { |
|||
@Autowired |
|||
private DailySalesReportService dailySalesReportService; |
|||
|
|||
public static DailySalesReportServiceTest dailySalesReportServiceTest; |
|||
@PostConstruct // 初始化
|
|||
public void init(){ |
|||
dailySalesReportServiceTest= this; |
|||
dailySalesReportServiceTest.dailySalesReportService= this.dailySalesReportService; |
|||
} |
|||
|
|||
public void test() throws ParseException { |
|||
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); |
|||
//String date=ft.format(new Date()-1);
|
|||
//昨天时间
|
|||
Date date= DateUtil.yesterday(); |
|||
//结束时间
|
|||
String d="2023-07-01"; |
|||
Date date1=ft.parse(d); |
|||
while (date1.before(date)){ |
|||
Calendar calendar = Calendar.getInstance(); |
|||
calendar.setTime(date); |
|||
calendar.add(Calendar.DAY_OF_MONTH, -1); |
|||
date = calendar.getTime(); |
|||
System.out.println(ft.format(date)); |
|||
dailySalesReportService.saveSales(ft.format(date)); |
|||
} |
|||
|
|||
} |
|||
} |
Loading…
Reference in new issue