提交 98658607 authored 作者: zhouzhigang's avatar zhouzhigang

--no commit message

上级 8f05a594
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.zrqx</groupId>
<artifactId>com.zrqx.pom</artifactId>
<version>1.0.0</version>
<relativePath>../com.zrqx.pom</relativePath>
</parent>
<groupId>com.zrqx</groupId>
<artifactId>com.zrqx.statistics</artifactId>
<dependencies>
<!-- <dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.20</version>
</dependency> -->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>com.zrqx</groupId>
<artifactId>com.zrqx.core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--表示为web工程 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 用于健康监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<!--熔断器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<!-- <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency> -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 引入solrj -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
</dependency>
<!--分布式事务 -->
<!-- <dependency> <groupId>com.codingapi</groupId> <artifactId>transaction-springcloud</artifactId>
<exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>*</artifactId>
</exclusion> </exclusions> </dependency> <dependency> <groupId>com.codingapi</groupId>
<artifactId>tx-plugins-db</artifactId> <exclusions> <exclusion> <groupId>org.slf4j</groupId>
<artifactId>*</artifactId> </exclusion> </exclusions> </dependency> -->
<!--swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<!-- Springsecurity给服务端提供安全访问 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--用于测试的 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 热部署工具 -->
<!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId>
</dependency> -->
</dependencies>
</project>
\ No newline at end of file
package com.zrqx.statistics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
import com.alibaba.druid.pool.DruidDataSource;
import tk.mybatis.spring.annotation.MapperScan;
@EnableFeignClients
@EnableEurekaClient
@EnableScheduling //定时器注解
@SpringBootApplication // 系统会去入口类的同级包以及下级包中去扫描实体类,因此我们建议入口类的位置在groupId+arctifactID组合的包名下。
@MapperScan(basePackages = {"com.zrqx.statistics.bg.mapper.*"})
public class StatisticsStart {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
private final static Logger logger = LoggerFactory.getLogger(StatisticsStart.class);
public static void main(String[] args) {
// 下面两行代码都可以用来启动
SpringApplication.run(StatisticsStart.class, args);
// new SpringApplicationBuilder(AppStart.class).web(true).run(args);
logger.info("statistics服务已启动.....");
// test serversion
}
@Bean
public DruidDataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setUsername(username);// 用户名
dataSource.setPassword(password);// 密码
dataSource.setInitialSize(2);
dataSource.setMaxActive(20);
dataSource.setMinIdle(0);
dataSource.setMaxWait(60000);
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestOnBorrow(false);
dataSource.setTestWhileIdle(true);
dataSource.setPoolPreparedStatements(false);
return dataSource;
}
}
package com.zrqx.statistics.bg.client.resource;
import java.util.List;
import org.springframework.cloud.netflix.feign.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 com.zrqx.core.constant.BaseRequestPath;
import com.zrqx.core.constant.resource.ResourceRequestPath;
import com.zrqx.core.form.resource.bg.BatchDeleteContractForm;
import com.zrqx.core.form.resource.bg.QueryResourceForPoPForm;
import com.zrqx.core.form.resource.bg.ebook.UpdateNumberForm;
import com.zrqx.core.form.statistics.client.ContractDateFrom;
import com.zrqx.core.form.statistics.client.ContractToResourceForm;
import com.zrqx.core.model.resource.ebook.Book;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.resource.ResourceRelationListVo;
import io.swagger.annotations.ApiOperation;
@FeignClient(name="resource", fallback = ResourceClientHystric.class)
public interface ResourceClient {
/**
* 根据isbn获取图书元数据
* @param isbn
* @return
*/
@GetMapping(ResourceRequestPath.BG + ResourceRequestPath.EBOOK + ResourceRequestPath.ISBN)
CallBack<PageInfo<Book>> getByIsbn(@RequestParam("isbn") String isbn,@RequestParam("name")String name,@RequestParam("author")String author,@RequestParam("uploadTime")String uploadTime,@RequestParam("pageParam")PageParam pageParam);
/**
* 获取图书元数据
* @param isbn
* @return
*/
@GetMapping(value = ResourceRequestPath.BG + ResourceRequestPath.PUBLIC + ResourceRequestPath.RELATION_RESOURCE + ResourceRequestPath.POPPAGE)
CallBack<PageInfo<ResourceRelationListVo>> page(QueryResourceForPoPForm form);
@ApiOperation(value = "远程接收批量删除资源的id、合同id", notes = "远程接收批量删除资源的id、合同id")
@PostMapping(value = ResourceRequestPath.BG + ResourceRequestPath.EBOOK + ResourceRequestPath.CLIENT+BaseRequestPath.BATCH_DELETE)
public CallBack<Boolean> deleteByResourceIds(@RequestBody BatchDeleteContractForm form);
@ApiOperation(value = "远程接收关联图书添加相关合同", notes = "远程接收关联图书添加相关合同")
@PostMapping(value = ResourceRequestPath.BG + ResourceRequestPath.EBOOK + ResourceRequestPath.CLIENT+BaseRequestPath.BATCH_SAVE)
public CallBack<?> saveByClient(@RequestBody ContractToResourceForm form);
/**
* 修改合同到期日期
* @param isbn
* @return
*/
@PostMapping(value = ResourceRequestPath.BG + ResourceRequestPath.EBOOK + ResourceRequestPath.CLIENT+BaseRequestPath.UPDATE_SAVE)
CallBack<?> updateContractDate(List<ContractDateFrom> form);
}
\ No newline at end of file
package com.zrqx.statistics.bg.client.resource;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.zrqx.core.form.resource.bg.BatchDeleteContractForm;
import com.zrqx.core.form.resource.bg.QueryResourceForPoPForm;
import com.zrqx.core.form.resource.bg.ebook.UpdateNumberForm;
import com.zrqx.core.form.statistics.client.ContractDateFrom;
import com.zrqx.core.form.statistics.client.ContractToResourceForm;
import com.zrqx.core.model.resource.ebook.Book;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.resource.ResourceRelationListVo;
/**
* @author Tujide.lv
*
*/
@Component
public class ResourceClientHystric implements ResourceClient {
private static final Logger log = Logger.getLogger(ResourceClientHystric.class);
@Override
public CallBack<PageInfo<Book>> getByIsbn(String isbn,String name,String author,String uploadTime,PageParam pageParam) {
return CallBack.fail();
}
@Override
public CallBack<PageInfo<ResourceRelationListVo>> page(QueryResourceForPoPForm form) {
return CallBack.fail();
}
@Override
public CallBack<Boolean> deleteByResourceIds(BatchDeleteContractForm form) {
return CallBack.fail();
}
@Override
public CallBack<?> saveByClient(ContractToResourceForm form) {
return CallBack.fail();
}
@Override
public CallBack<?> updateContractDate(List<ContractDateFrom> form) {
return CallBack.fail();
}
}
package com.zrqx.statistics.bg.client.sysuser;
import java.util.List;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.zrqx.core.constant.sysuser.SysUserRequestPath;
import com.zrqx.core.model.sysuser.log.Log;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.vo.sysuser.bg.dept.DepartmentVO;
@FeignClient(name="sysuser", fallback = SysuserClientHystric.class)
public interface SysuserClient {
/**
* 保存日志
* @param log
* @return
* @author yzg
* @date: 2018年8月16日 下午2:37:59
*/
@PostMapping(SysUserRequestPath.BG + SysUserRequestPath.LOG + SysUserRequestPath.SAVE)
CallBack<Boolean> saveLog(@RequestBody Log log);
/**
* 查询部门
* @param log
* @return
*/
@GetMapping(SysUserRequestPath.BG + SysUserRequestPath.DEPT + SysUserRequestPath.LIST)
public CallBack<List<DepartmentVO>> getList();
}
\ No newline at end of file
package com.zrqx.statistics.bg.client.sysuser;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.zrqx.core.model.sysuser.log.Log;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.vo.sysuser.bg.dept.DepartmentVO;
/**
* @author Tujide.lv
*
*/
@Component
public class SysuserClientHystric implements SysuserClient {
private static final Logger log = Logger.getLogger(SysuserClientHystric.class);
/**
* @see com.zrqx.BookClient.client.SysuserClient#saveLog(com.zrqx.core.model.sysuser.log.Log)
* @param log
* @return
* @author ray
* @date: 2018年7月27日 上午10:59:35
*/
@Override
public CallBack<Boolean> saveLog(Log log) {
SysuserClientHystric.log.info("保存操作日志失败");
return CallBack.fail();
}
@Override
public CallBack<List<DepartmentVO>> getList() {
return CallBack.fail();
}
}
package com.zrqx.statistics.bg.controller.numStatistics;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.constant.statistics.StatisticsRequestPath;
import com.zrqx.core.form.statistics.ContrastForm;
import com.zrqx.core.form.statistics.CountForm;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.vo.statistics.numStatistics.NumCountVo;
import com.zrqx.core.vo.works.door.WaitExamineVo;
import com.zrqx.statistics.bg.service.numStatistics.NumStatisticsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping(StatisticsRequestPath.BG + StatisticsRequestPath.NUMSTATISTICS)
@Api(description = "统计-资源数量统计")
public class NumStatisticsController {
@Autowired
private NumStatisticsService service;
@ApiOperation(value = "列表", notes = "列表统计")
@GetMapping(value = StatisticsRequestPath.LIST)
public CallBack<JSONObject> count(CountForm form) {
return CallBack.success(service.count(form));
}
@ApiOperation(value = "扇形", notes = "扇形统计")
@GetMapping(value = StatisticsRequestPath.FAN)
public CallBack<JSONObject> fan() {
return CallBack.success(service.fan());
}
@ApiOperation(value = "各部门资源对比", notes = "部门资源对比")
@GetMapping(value = StatisticsRequestPath.CONTRAST)
public CallBack<JSONObject> contrast(ContrastForm form) {
return CallBack.success(service.contrast(form));
}
@ApiOperation(value = "资源总量", notes = "远程访问调用-资源总量")
@GetMapping(value = StatisticsRequestPath.TOTAL)
public CallBack<Integer> total() {
return CallBack.success(service.total());
}
@ApiOperation(value = "产品种类", notes = "远程访问调用-产品种类")
@GetMapping(value = StatisticsRequestPath.PRODUCT)
public CallBack<Integer> product() {
return CallBack.success(service.product());
}
@ApiOperation(value = "待审核事物", notes = "远程访问调用-待审核事物")
@GetMapping(StatisticsRequestPath.WAITEXAMINE)
public CallBack<List<WaitExamineVo>> waitExamine(){
return CallBack.success(service.waitExamine());
}
}
package com.zrqx.statistics.bg.controller.statisticalAnalysis;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.constant.statistics.StatisticsRequestPath;
import com.zrqx.core.enums.ResponseCodeEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.form.resource.bg.BatchDeleteForm;
import com.zrqx.core.form.statistics.BookGroupFrom;
import com.zrqx.core.form.statistics.QueryBookGroupFrom;
import com.zrqx.core.form.statistics.SaveBookGroupFrom;
import com.zrqx.core.form.statistics.UpdateBookGroupFrom;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookGroupSplitVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookGroupVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookSalesSplitVo;
import com.zrqx.statistics.bg.client.resource.ResourceClient;
import com.zrqx.statistics.bg.service.statisticalAnalysis.BookGroupStatisticsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
*
*
* @author wenhaonan
* @date 2019年3月19日
*/
@RestController
@RequestMapping(StatisticsRequestPath.BG + StatisticsRequestPath.BOOKGROUPSTATISTICS)
@Api(description = "套组书销售记录")
public class BookGroupStatisticsController {
@Autowired
private BookGroupStatisticsService service;
@Autowired
private ResourceClient client;
@ApiOperation(value = "套组书分页查询", notes = "套组书分页查询")
@GetMapping(value = StatisticsRequestPath.PAGE)
public CallBack<PageInfo<BookGroupVo>> page(QueryBookGroupFrom form, PageParam pageParam) {
return CallBack.success(service.page(form, pageParam));
}
@ApiOperation(value = "查询关联图书", notes = "查询关联图书")
@GetMapping(value = StatisticsRequestPath.QUERYRELATION)
public CallBack<PageInfo<BookGroupSplitVo>> queryRelation(BookGroupFrom form, PageParam pageParam) {
return CallBack.success(service.queryRelation( form,pageParam));
}
@ApiOperation(value = "查询拆分数据", notes = "查询拆分数据")
@GetMapping(value = StatisticsRequestPath.QUERYSPLIT)
public CallBack<PageInfo<BookSalesSplitVo>> querySplit(BookGroupFrom form, PageParam pageParam) {
return CallBack.success(service.querySplit(form, pageParam));
}
@ApiOperation(value = "修改销售金额", notes = "修改销售金额")
@PostMapping(value = StatisticsRequestPath.UPDATE)
public CallBack<Boolean> updateSales(@RequestBody UpdateBookGroupFrom form) {
if(!service.updateSales(form)){
throw new BaseException(ResponseCodeEnum.FAIL);
}
return CallBack.success();
}
@ApiOperation(value = "保存关联", notes = "关联")
@PostMapping(value = StatisticsRequestPath.SAVE)
public CallBack<Boolean> saveRelation(@RequestBody SaveBookGroupFrom form) {
if (!service.save(form)) {
throw new BaseException(ResponseCodeEnum.FAIL);
}
return CallBack.success();
}
@ApiOperation(value = "取消关联", notes = "取消关联")
@PostMapping(value = StatisticsRequestPath.BATCH_DELETE)
public CallBack<String> delete(@RequestBody BatchDeleteForm form) {
List<String> ids = form.getIds();
return CallBack.success(service.delete(ids));
}
}
package com.zrqx.statistics.bg.controller.statisticalAnalysis;
import java.io.File;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.constant.statistics.StatisticsRequestPath;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.form.statistics.QueryBookFrom;
import com.zrqx.core.form.statistics.QueryErraceFrom;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookReportVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ExportbookVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.PlatformStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.StatisticsBookInfoVo;
import com.zrqx.statistics.bg.client.resource.ResourceClient;
import com.zrqx.statistics.bg.service.statisticalAnalysis.BookStatisticsService;
import com.zrqx.statistics.commons.util.ExportExcelBookStatistics;
import com.zrqx.statistics.commons.util.ExportExcelTemplate;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
*
*
* @author wenhaonan
* @date 2019年3月19日
*/
@RestController
@RequestMapping(StatisticsRequestPath.BG + StatisticsRequestPath.BOOKSTATISTICS)
@Api(description = "图书销售排行")
public class BookStatisticsController {
@Autowired
private BookStatisticsService service;
//调用图书模块方法
@Autowired
private ResourceClient client;
@ApiOperation(value = "图书销售排行分页查询", notes = "图书销售排行分页查询")
@GetMapping(value = StatisticsRequestPath.PAGE)
public CallBack<PageInfo<BookStatisticsVo>> page(QueryBookFrom form, PageParam pageParam) {
return CallBack.success(service.page(form, pageParam));
}
@ApiOperation(value = "导出图书销售排行", notes = "导出图书销售排行")
@GetMapping(value = StatisticsRequestPath.EXPORTBOOKSTATIC)
public CallBack<String> export(QueryBookFrom form, HttpServletRequest request, HttpServletResponse response) {
//查询平台数据
List<BookStatisticsVo> exportList = service.exportBookStatistics(form);
String orderStart =form.getOrderstart();
//String modelPath = File.separator+"template"+File.separator+"temp.xls";
String modelPath ="/opt/upload/HxTemplate"+File.separator+"图书销售排行报表.xls";
//String modelPath ="C:/Users/Administrator/Desktop"+File.separator+"图书销售排行报表.xls";
try {
//导出
ExportExcelBookStatistics.exportXls(BookStatisticsVo.class,modelPath, exportList, 0, 1, 0, response,
request,orderStart);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return CallBack.success();
}
@ApiOperation(value = "销售趋势查询", notes = "销售趋势查询")
@GetMapping(value = StatisticsRequestPath.REPORT)
public CallBack<BookReportVo> report(QueryBookFrom form) {
return CallBack.success(service.report(form));
}
@ApiOperation(value = "通过年查询平台销售统计", notes = "通过年查询平台销售统计")
@GetMapping(value = StatisticsRequestPath.LIST)
public CallBack<PageInfo<PlatformStatisticsVo>> year( QueryErraceFrom form) {
return CallBack.success(service.year(form));
}
@ApiOperation(value = "详情页各平台图书销售统计", notes = "详情页各平台图书销售统计")
@GetMapping(value = StatisticsRequestPath.DETAILSREPORT)
public CallBack<PageInfo<PlatformStatisticsVo>> yearDetail( QueryErraceFrom form) {
return CallBack.success(service.yearDetail(form));
}
@ApiOperation(value = "图书销售详情页", notes = "图书销售详情页")
@GetMapping(value = StatisticsRequestPath.DETAIL)
public CallBack<StatisticsBookInfoVo> getBookInfo(String bookid){
QueryBookFrom form1 = new QueryBookFrom();
form1.setId(bookid);
QueryErraceFrom form = new QueryErraceFrom();
form.setId(bookid);
StatisticsBookInfoVo vo = new StatisticsBookInfoVo();
vo.setBookStatisticsVo(service.bookDetil(bookid));
vo.setBook(service.bookInfo(form1));
vo.setBookReportVo(service.report(form1));//折线图
vo.setPlatformStatisticsVo(service.year(form));
return CallBack.success(vo);
}
@ApiOperation(value = "导出平台销售统计", notes = "导出平台销售统计")
@GetMapping(value = StatisticsRequestPath.EXPORT)
public CallBack<String> export(QueryErraceFrom form, HttpServletRequest request, HttpServletResponse response) {
//查询平台数据
List<ExportbookVo> exportList = service.exportReport(form);
/* if (exportList == null || exportList.size() == 0) {
throw new BaseException("未查询到资源!");
}*/
//年份
String orderStart =form.getOrderstart();
//String modelPath = File.separator+"template"+File.separator+"temp.xls";
String modelPath ="/opt/upload/HxTemplate"+File.separator+"年度销售报表.xls";
try {
//导出
ExportExcelTemplate.exportXls(ExportbookVo.class,modelPath, exportList, 0, 3, 0, response,
request,orderStart);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return CallBack.success();
}
/*@ApiOperation(value = "导出折线图报表")
@GetMapping(value = StatisticsRequestPath.EXPORTREPORT)
public CallBack<String> exportReport(QueryBookFrom form,HttpServletRequest request, HttpServletResponse response )
throws Exception {
BookReportVo plan = service.report(form);
Map<String, Object> map = new HashMap<String, Object>();
map.put("bPrice", plan.getPricelist()!=null?plan.getPricelist():"");
map.put("bYear", plan.getYearlist()!=null?plan.getYearlist():"");
WordUtils.exportMillCertificateWord(request,response,map,"销售趋势报表","sellPlan.ftl");
return CallBack.success();
}*/
}
package com.zrqx.statistics.bg.controller.statisticalAnalysis;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.zrqx.core.constant.statistics.StatisticsRequestPath;
import com.zrqx.core.enums.ResponseCodeEnum;
import com.zrqx.core.enums.statistics.SiteEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.form.resource.bg.BatchDeleteForm;
import com.zrqx.core.form.statistics.QueryErraceFrom;
import com.zrqx.core.form.statistics.financial.BookFrom;
import com.zrqx.core.form.statistics.financial.DateilsFrom;
import com.zrqx.core.form.statistics.financial.FinancialFrom;
import com.zrqx.core.form.statistics.financial.SaveRecordFrom;
import com.zrqx.core.form.statistics.financial.SaveRoyaltyFrom;
import com.zrqx.core.form.statistics.financial.SaveTaxPointForm;
import com.zrqx.core.model.statictics.FinaancialManage.TaxPoint;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.util.excelutil.ImportExcelUtil;
import com.zrqx.core.vo.statistics.financial.FinancialManageVo;
import com.zrqx.core.vo.statistics.financial.FinancialRecordVo;
import com.zrqx.core.vo.statistics.financial.ImportFinancialExcelVo;
import com.zrqx.core.vo.statistics.financial.ImportRoyaltyExcelVo;
import com.zrqx.core.vo.statistics.financial.RoyaltyDetailsInfoVo;
import com.zrqx.core.vo.statistics.financial.RoyaltyInfoVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ExportbookVo;
import com.zrqx.statistics.bg.service.contract.TaxPointService;
import com.zrqx.statistics.bg.service.statisticalAnalysis.FinancialManageService;
import com.zrqx.statistics.commons.util.ExportExcelFinancial;
import com.zrqx.statistics.commons.util.ExportExcelTemplate;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import tk.mybatis.mapper.entity.Example.Criteria;
/**
*
*
* @author wenhaonan
* @date 2019年3月19日
*/
@RestController
@RequestMapping(StatisticsRequestPath.BG + StatisticsRequestPath.FINANCIALMANAGE)
@Api(description = "财务管理")
public class FinancialManageController {
@Autowired
private FinancialManageService service;
@Autowired
private TaxPointService taxPointservice;
@ApiOperation(value = "版税结算导出", notes = "版税结算导出")
@GetMapping(value = StatisticsRequestPath.EXPORT)
public CallBack<String> export(BookFrom form, HttpServletRequest request, HttpServletResponse response) {
//查询平台数据
if(StringUtils.isBlank(form.getIsbn()) || form.getIsbn().equals("null") ) {
form.setIsbn(null);
}
if(StringUtils.isBlank(form.getName()) || form.getName().equals("null") ) {
form.setName(null);
}
if(StringUtils.isBlank(form.getType()) || form.getType().equals("null") ) {
form.setType(null);
}
if(StringUtils.isBlank(form.getType()) || form.getType().equals("null") ) {
form.setAuthor(null);
}
List<RoyaltyInfoVo> exportList = service.royaltyQueryExport(form);
/* if (exportList == null || exportList.size() == 0) {
throw new BaseException("未查询到资源!");
}*/
String modelPath ="/home/lizhuo/templet"+File.separator+"版税结算数据.xls";
//String modelPath ="D:/"+File.separator+"版税结算数据.xls";
System.out.println(modelPath);
try {
//导出
ExportExcelFinancial.exportXls(RoyaltyInfoVo.class,modelPath, exportList, 0, 1, 0, response,
request);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return CallBack.success();
}
@ApiOperation(value = "查询当前信息有哪些已结算平台,自动勾选", notes = "查询当前信息已结算平台,自动勾选")
@GetMapping(value = StatisticsRequestPath.SITEQUERY)
public CallBack<HashMap<Integer, String>> siteQuery(String timeaccount) {
//已结算平台个数
return CallBack.success(service.siteQuery(timeaccount));
}
@ApiOperation(value = "版税结算分页查询", notes = "版税结算分页查询")
@GetMapping(value = StatisticsRequestPath.ROYALTYQUERY)
public CallBack<PageInfo<RoyaltyInfoVo>> royaltyQuery(BookFrom form,PageParam pageParam) {
return CallBack.success(service.royaltyQuery(form,pageParam));
}
@ApiOperation(value = "版税结算详情分页查询", notes = "版税结算详情分页查询")
@GetMapping(value = StatisticsRequestPath.ROYALTYDETAILSQUERY)
public CallBack<RoyaltyDetailsInfoVo> royaltyDetailsQuery(DateilsFrom form,PageParam pageParam) {
RoyaltyDetailsInfoVo detailVo = new RoyaltyDetailsInfoVo();
detailVo.setRoyaltyInfoList(service.royaltyDetailsQuery(form,pageParam));
detailVo.setGetRoyaltyInfoVo(service.royaltyDetails(form));
return CallBack.success(detailVo);
}
@ApiOperation(value = "平台结算查询", notes = "平台结算查询")
@GetMapping(value = StatisticsRequestPath.FINANCIALQUERY)
public CallBack<List<FinancialManageVo>> page(FinancialFrom form) {
return CallBack.success(service.page(form));
}
@ApiOperation(value = "查询枚举里各个平台", notes = "查询枚举里各个平台")
@GetMapping(value = StatisticsRequestPath.ENUMFINAN)
public CallBack<HashMap<Integer, String>> EnumFinan() {
return CallBack.success(SiteEnum.getAllEnumMap());
}
@ApiOperation(value = "平台结算记录分页查询", notes = "平台结算分页查询")
@GetMapping(value = StatisticsRequestPath.PAGE)
public CallBack<PageInfo<FinancialRecordVo>> page(FinancialFrom form ,PageParam pageParam) {
return CallBack.success(service.queryRecord(form,pageParam));
}
@ApiOperation(value = "版税结算修改", notes = "版税结算修改")
@PostMapping(value = StatisticsRequestPath.SAVEROYALTY)
public CallBack<Boolean> saveRoyaltySale(@RequestBody SaveRoyaltyFrom form) {
if (!service.updateRoyalty(form)) {
throw new BaseException(ResponseCodeEnum.FAIL);
}
return CallBack.success();
}
@ApiOperation("批量删除税点")
@PostMapping(StatisticsRequestPath.TAXPOINT+StatisticsRequestPath.BATCH+StatisticsRequestPath.DELETE)
public CallBack<Integer> batchDeleteSalesContract(@RequestBody BatchDeleteForm form){
List<String> ids =form.getIds();
return CallBack.success(service.deleteTaxPoint(ids));
}
@ApiOperation(value = "税点设置", notes = "税点设置")
@PostMapping(value = StatisticsRequestPath.TAXPOINT)
public CallBack<Integer> saveTaxPoint(@RequestBody SaveTaxPointForm form) {
return CallBack.success(service.saveTaxPoint(form));
}
@ApiOperation(value = "税点查询", notes = "税点查询")
@GetMapping(value = StatisticsRequestPath.GET + StatisticsRequestPath.TAXPOINT)
public CallBack<PageInfo<TaxPoint>> taxPoint(Integer siteType, PageParam pageParam) {
return CallBack.success(service.taxPoint(siteType, pageParam));
}
@ApiOperation(value = "平台结算修改", notes = "平台结算修改")
@PostMapping(value = StatisticsRequestPath.SAVE)
public CallBack<Boolean> saveSale(@RequestBody SaveRecordFrom form) {
if (!service.save(form)) {
throw new BaseException(ResponseCodeEnum.FAIL);
}
return CallBack.success();
}
@ApiOperation(value = "版税结算批量删除记录", notes = "版税结算批量删除记录")
@PostMapping(value = StatisticsRequestPath.ROYALTYDELETE)
public CallBack<String> royaltyDelete(@RequestBody BatchDeleteForm form) {
List<String> ids = form.getIds();
return CallBack.success(service.royaltyDelete(ids));
}
@ApiOperation(value = "平台结算批量删除记录", notes = "平台结算批量删除记录")
@PostMapping(value = StatisticsRequestPath.BATCH_DELETE)
public CallBack<String> delete(@RequestBody BatchDeleteForm form) {
List<String> ids = form.getIds();
return CallBack.success(service.batchDelete(ids));
}
@ApiOperation(value = "导入平台结算记录Excel")
@PostMapping(value = StatisticsRequestPath.IMPORT, produces = "application/json;charset=UTF-8")
public CallBack<Integer> importThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportFinancialExcelVo> list = ImportExcelUtil.importExcel(file.getInputStream(), ImportFinancialExcelVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveList(list));
}
@ApiOperation(value = "导入版税结算记录Excel")
@PostMapping(value = StatisticsRequestPath.ROYALTYIMPORT, produces = "application/json;charset=UTF-8")
public CallBack<Integer> importRoyalty(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportRoyaltyExcelVo> list = ImportExcelUtil.importExcel(file.getInputStream(), ImportRoyaltyExcelVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveRoyaltyList(list));
}
}
package com.zrqx.statistics.bg.controller.statisticalAnalysis;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.constant.statistics.StatisticsRequestPath;
import com.zrqx.core.form.statistics.contract.QueryContractForm;
import com.zrqx.core.form.statistics.financial.BookFrom;
import com.zrqx.core.model.resource.ebook.Book;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.contract.BookContractVo;
import com.zrqx.core.vo.statistics.gateway.BookSaleRankingVo;
import com.zrqx.statistics.bg.client.resource.ResourceClient;
import com.zrqx.statistics.bg.service.contract.ContractService;
import com.zrqx.statistics.bg.service.statisticalAnalysis.FinancialManageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
*
*
* @author wenhaonan
* @date 2019年3月19日
*/
@RestController
@RequestMapping(StatisticsRequestPath.BG + StatisticsRequestPath.GATEWAY)
@Api(description = "系统门户")
public class GatewayController {
@Autowired
private FinancialManageService service;
@Autowired
private ResourceClient client;
@Autowired
private ContractService contractService;
@ApiOperation(value = "图书销售排行分页查询", notes = "图书销售排行分页查询")
@GetMapping(value = StatisticsRequestPath.PAGE)
public CallBack<PageInfo<BookSaleRankingVo>> rankingQuery(PageParam pageParam) {
return CallBack.success(service.rankingQuery(pageParam));
}
@ApiOperation(value = "电子出版物到期提醒分页查询", notes = "电子出版物到期提醒分页查询")
@GetMapping(value = StatisticsRequestPath.REMINDQUERY)
public CallBack<PageInfo<BookContractVo>> remindQuery(PageParam pageParam) {
QueryContractForm form = new QueryContractForm();
form.setOrderType("1");
return CallBack.success(contractService.getbookcontractInfo(pageParam,form));
}
@SuppressWarnings("unchecked")
@ApiOperation(value = "图书详情查询", notes = "图书详情查询")
@GetMapping(value = StatisticsRequestPath.DETAIL)
public CallBack<List<Book>> bookDetail(BookFrom from) {
//远程调用资源图书
CallBack<PageInfo<Book>> bookClient = client.getByIsbn(from.getIsbn(),from.getName(),null,null,null);
List<Book> bookListVo = null;
if(bookClient.isStatus()) {
PageInfo<Book> book = bookClient.getData();
bookListVo = book.getList();
}
return CallBack.success(bookListVo);
}
}
package com.zrqx.statistics.bg.controller.statisticalAnalysis;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zrqx.core.util.HttpUtils;
public class Text {
public static void main(String[] args) {
String str="2 的 坦克";
String [] arr = str.split("\\s+");
Arrays.asList(arr).contains("坦克");
System.out.println(Arrays.asList(arr).contains("aaa"));
for(String ss : arr){
System.out.println(ss);
}
List<String> upperLowerstate =new ArrayList<>();
upperLowerstate.add("amazon");
upperLowerstate.add("jd");
System.out.println(upperLowerstate.contains("jd"));
//System.out.println("地址是:" + addressResolution("新疆维吾尔自治区阿克苏地区的阿克苏市、阿拉尔市、库车县、新和县、沙雅县、温宿县、阿瓦提县、坷平县等8个县市现辖行政区域 "));
}
/**
* 解析地址
* @author liuj
* @param address
* @return
*/
public static List<Map<String,String>> addressResolution(String address){
String regex="(?<province>[^省]+省|.+自治区)(?<city>[^自治州]+自治州|[^市]+市|[^盟]+盟|[^地区]+地区|.+区划)(?<county>[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
Matcher m=Pattern.compile(regex).matcher(address);
String province=null,city=null,county=null,town=null,village=null;
List<Map<String,String>> list=new ArrayList<Map<String,String>>();
Map<String,String> row=null;
while(m.find()){
row=new LinkedHashMap<String,String>();
province=m.group("province");
row.put("province", province==null?"":province.trim());
city=m.group("city");
row.put("city", city==null?"":city.trim());
county=m.group("county");
row.put("county", county==null?"":county.trim());
town=m.group("town");
row.put("town", town==null?"":town.trim());
village=m.group("village");
row.put("village", village==null?"":village.trim());
list.add(row);
}
return list;
}
}
// public static void main(String[] args) {
//
// }
package com.zrqx.statistics.bg.controller.statisticalAnalysis;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.springframework.beans.factory.annotation.Autowired;
import com.zrqx.statistics.bg.mapper.contract.ContractMapper;
public class Textdemo {
@Autowired
ContractMapper contractMapper;
/**
* 从网络Url中下载文件
*
* @param urlStr
* @param fileName
* @param savePath
* @throws IOException
*/
public static void downLoadByUrl(String urlStr, String fileName, String savePath) throws IOException {
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置超时间为3秒
conn.setConnectTimeout(5 * 1000);
// 防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
// 得到输入流
InputStream inputStream = conn.getInputStream();
// 获取自己数组
byte[] getData = readInputStream(inputStream);
// 文件保存位置
File saveDir = new File(savePath);
if (!saveDir.exists()) {
saveDir.mkdir();
}
File file = new File(saveDir + File.separator + fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(getData);
if (fos != null) {
fos.close();
}
if (inputStream != null) {
inputStream.close();
}
System.out.println("info:" + url + " download success");
}
/**
* 从输入流中获取字节数组
*
* @param inputStream
* @return
* @throws IOException
*/
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
}
package com.zrqx.statistics.bg.controller.statisticalAnalysis;
import java.io.DataInputStream;
import java.io.InputStreamReader;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.opencsv.CSVReader;
import com.zrqx.core.constant.statistics.StatisticsRequestPath;
import com.zrqx.core.enums.statistics.SiteEnum;
import com.zrqx.core.form.resource.bg.BatchDeleteForm;
import com.zrqx.core.form.statistics.QueryYmxBookFrom;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.util.excelutil.ExcelStatisticsUtil;
import com.zrqx.core.util.excelutil.ImportExcelUtil;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportBdExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportDdExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportDedaoExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportExcelCXStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportExcelJDStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportExcelYmxStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportRtExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportZyExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.YmxStatisticsVo;
import com.zrqx.statistics.bg.service.statisticalAnalysis.YmxStatisticsService;
import com.zrqx.statistics.commons.util.YmxExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
*
*
* @author wenhaonan
* @date 2019年3月19日
*/
@RestController
@RequestMapping(StatisticsRequestPath.BG + StatisticsRequestPath.YMXSTATISTICS)
@Api(description = "统计分析")
public class YmxStatisticsController {
@Autowired
private YmxStatisticsService service;
@ApiOperation(value = "平台分页查询", notes = "分页查询")
@GetMapping(value = StatisticsRequestPath.PAGE)
public CallBack<PageInfo<YmxStatisticsVo>> page(QueryYmxBookFrom form, PageParam pageParam) {
return CallBack.success(service.page(form, pageParam));
}
@ApiOperation(value = "批量删除", notes = "批量删除")
@PostMapping(value = StatisticsRequestPath.BATCH_DELETE)
public CallBack<String> delete(@RequestBody BatchDeleteForm form) {
List<String> ids = form.getIds();
return CallBack.success(service.batchDelete(ids));
}
@ApiOperation(value = "亚马逊-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORT, produces = "application/json;charset=UTF-8")
public CallBack<Integer> importThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportExcelYmxStatisticsVo> list = YmxExcelUtil.importExcel(file.getInputStream(), ImportExcelYmxStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveList(list));
}
@ApiOperation(value = "百度-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTBD, produces = "application/json;charset=UTF-8")
public CallBack<Integer> imporBdtThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportBdExcelStatisticsVo> list = ImportExcelUtil.importExcel(file.getInputStream(), ImportBdExcelStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveBdList(list));
}
@ApiOperation(value = "人天-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTRT, produces = "application/json;charset=UTF-8")
public CallBack<Integer> imporRTtThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportRtExcelStatisticsVo> list = ImportExcelUtil.importExcel(file.getInputStream(), ImportRtExcelStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveRtList(list));
}
@ApiOperation(value = "掌阅-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTZY, produces = "application/json;charset=UTF-8")
public CallBack<Integer> imporZytThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportZyExcelStatisticsVo> list = ExcelStatisticsUtil.importExcel(file.getInputStream(), ImportZyExcelStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveZyList(list));
}
@ApiOperation(value = "当当-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTDD, produces = "application/json;charset=UTF-8")
public CallBack<Integer> imporDdtThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportDdExcelStatisticsVo> list = ImportExcelUtil.importExcel(file.getInputStream(), ImportDdExcelStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveDdList(list));
}
@ApiOperation(value = "得到-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTDEDAO, produces = "application/json;charset=UTF-8")
public CallBack<Integer> imporDedaotThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportDedaoExcelStatisticsVo> list = ImportExcelUtil.importExcel(file.getInputStream(), ImportDedaoExcelStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveDedaoList(list));
}
@ApiOperation(value = "网易-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTWY, produces = "application/json;charset=UTF-8")
public CallBack<Integer> imporWytThemeLexicon(@RequestParam("file") MultipartFile file,Integer state) throws Exception {
DataInputStream in = new DataInputStream(file.getInputStream());
CSVReader csvReader = new CSVReader(new InputStreamReader(in,"gbk"));
String[] strs = csvReader.readNext(); //表头一行的值
/*if(strs != null && strs.length > 0){
for(String str : strs)
if(null != str && !str.equals(""))
System.out.print(str + " , ");
System.out.println("\n---------------");
} */
List<String[]> list = csvReader.readAll(); //除了表头一行,所有值
/* for(String[] ss : list){
System.out.println(ss);
for(String s : ss)
if(null != s && !s.equals(""))
System.out.print(s + " , ");
System.out.println();
} */
csvReader.close();
return CallBack.success(service.saveWyList(list,state));
}
@ApiOperation(value = "京东-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTJD, produces = "application/json;charset=UTF-8")
public CallBack<Integer> importJDThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportExcelJDStatisticsVo> list = YmxExcelUtil.importExcel(file.getInputStream(), ImportExcelJDStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveJDList(list));
}
@ApiOperation(value = "中轻-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTZQ, produces = "application/json;charset=UTF-8")
public CallBack<Integer> importZQThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportExcelCXStatisticsVo> list = YmxExcelUtil.importExcel(file.getInputStream(), ImportExcelCXStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveZQList(list,SiteEnum.ZHONGQING.getName(),SiteEnum.ZHONGQING.getCode().intValue()));
}
@ApiOperation(value = "盲文-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTMW, produces = "application/json;charset=UTF-8")
public CallBack<Integer> importMWThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportExcelCXStatisticsVo> list = YmxExcelUtil.importExcel(file.getInputStream(), ImportExcelCXStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveZQList(list,SiteEnum.MANGWEN.getName(),SiteEnum.MANGWEN.getCode().intValue()));
}
@ApiOperation(value = "超星-导入数据Excel")
@PostMapping(value = StatisticsRequestPath.IMPORTCX, produces = "application/json;charset=UTF-8")
public CallBack<Integer> importCXThemeLexicon(@RequestParam("file") MultipartFile file) throws Exception {
List<ImportExcelCXStatisticsVo> list = YmxExcelUtil.importExcel(file.getInputStream(), ImportExcelCXStatisticsVo.class,
file.getOriginalFilename());
return CallBack.success(service.saveZQList(list,SiteEnum.CHAOXING.getName(),SiteEnum.CHAOXING.getCode().intValue()));
}
}
package com.zrqx.statistics.bg.controller.statisticalAnalysis;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class demo {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d1;
Date d2;
try {
d1 = sdf.parse("2014-12-04");
d2 = sdf.parse("2015-05-02");
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(d1);
c2.setTime(d2);
int year1 = c1.get(Calendar.YEAR);
int year2 = c2.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int month2 = c2.get(Calendar.MONTH);
int day1 = c1.get(Calendar.DAY_OF_MONTH);
int day2 = c2.get(Calendar.DAY_OF_MONTH);
System.out.println(month1+1);
System.out.println();
// 获取年的差值 
int yearInterval = year1 - year2;
// 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
if (month1 < month2 || month1 == month2 && day1 < day2) {
yearInterval--;
}
// 获取月数差值
int monthInterval = (month1 + 12) - month2;
monthInterval--;
monthInterval %= 12;
int monthsDiff = Math.abs(yearInterval * 12 + monthInterval);
System.out.println(monthsDiff);
c1.add(Calendar.MONTH, +1);
Date dt1 = c1.getTime();
String reStr = sdf.format(dt1);
System.out.println(reStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.zrqx.statistics.bg.controller.useStatistics;
import java.util.List;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.constant.statistics.StatisticsRequestPath;
import com.zrqx.core.form.statistics.ContrastForm;
import com.zrqx.core.form.statistics.CountForm;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.vo.statistics.useStatistics.UseCountVo;
import com.zrqx.statistics.bg.service.useStatistics.UseStatisticsService;
@RestController
@RequestMapping(StatisticsRequestPath.BG + StatisticsRequestPath.USESTATISTICS)
@Api(description = "统计-资源使用情况统计")
public class UseStatisticsController {
@Autowired
private UseStatisticsService service;
@ApiOperation(value = "列表", notes = "列表统计")
@GetMapping(value = StatisticsRequestPath.LIST)
public CallBack<List<UseCountVo>> count(CountForm form) {
return CallBack.success(null);
}
@ApiOperation(value = "年/月度对比", notes = "年/月度对比")
@GetMapping(value = StatisticsRequestPath.CONTRAST)
public CallBack<JSONObject> contrast(ContrastForm form) {
return CallBack.success(null);
}
}
package com.zrqx.statistics.bg.manage.contract;
import java.math.BigDecimal;
import java.util.List;
import com.zrqx.core.form.statistics.contract.QueryProportionByBookForm;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractConnect;
import com.zrqx.core.service.BaseService;
/**
* 合同关联合同
*/
public interface ContractConnectManage extends BaseService<ContractConnect, String> {
/**
* 保存合同关联合同关系
* @param contractList
* @param c
* @return
*/
Integer saveContractConnect(List<String> contractList, Contract c);
/**
* 根据合同id获取合同关联的合同列表
* @param id
* @return
*/
List<Contract> getContractList(String contractId);
/**
* 获取分成比例
* @return
*/
BigDecimal getProportion(QueryProportionByBookForm form);
/**
* 获取销售合同分成比例
* @return
*/
BigDecimal getProportionXS(QueryProportionByBookForm form);
/**
* 获取合同类型
* @return
*/
Integer getContract(QueryProportionByBookForm form);
/**
* 获取获取预付版税
* @return
*/
BigDecimal getPre(QueryProportionByBookForm form);
}
package com.zrqx.statistics.bg.manage.contract;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.form.statistics.contract.QueryProportionByBookForm;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractConnect;
import com.zrqx.core.model.statictics.ContractResource;
import com.zrqx.core.model.statictics.ContractRoyalty;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.statistics.bg.mapper.contract.ContractConnectMapper;
import com.zrqx.statistics.bg.mapper.contract.ContractMapper;
/**
* 合同关联合同
*/
@Service
public class ContractConnectManageImpl extends BaseServiceImpl<ContractConnect,String> implements ContractConnectManage{
@Autowired
private ContractConnectMapper mapper;
@Autowired
private ContractMapper contractMapper;
@Override
public BaseMapper<ContractConnect> getMapper() {
return mapper;
}
@Override
public Integer saveContractConnect(List<String> contractList, Contract c) {
int result = 0;
if(contractList != null){
//先删除之前的关联
ContractConnect record = new ContractConnect();
record.setLocalContractId(c.getId());
mapper.delete(record);
//重新添加关联信息
for(String id : contractList){
ContractConnect cc = new ContractConnect();
cc.setConnectContractId(id);
cc.setLocalContractId(c.getId());
cc.setCreateTime(new Date());
insert(cc);
result++;
}
}
return result;
}
@Override
public List<Contract> getContractList(String contractId) {
List<Contract> result = new ArrayList<Contract>();
ContractConnect record = new ContractConnect();
record.setLocalContractId(contractId);
List<ContractConnect> list = select(record);
for(ContractConnect cc : list){
Contract c = contractMapper.selectByPrimaryKey(cc.getConnectContractId());
result.add(c);
}
return result;
}
@Override
public BigDecimal getProportion(QueryProportionByBookForm form) {
BigDecimal bd = null;
ContractResource record = new ContractResource();
if(StringUtils.isNoneBlank(form.getBookId())){
record.setObjectId(form.getBookId());
}
if(StringUtils.isNoneBlank(form.getName())){
record.setName(form.getName());
}
if(StringUtils.isNoneBlank(form.getIsbn())){
record.setIsbn(form.getIsbn());
}
if(StringUtils.isNotBlank(form.getAuthor())){
record.setAuthor(form.getAuthor());
}
List<Contract> list = contractMapper.getProportion(form);
if(list != null && list.size()>0){
Contract c = list.get(0);
bd = c.getProportion();
}
return bd;
}
//获取销售合同比例
@Override
public BigDecimal getProportionXS(QueryProportionByBookForm form) {
BigDecimal bd = null;
ContractResource record = new ContractResource();
if(StringUtils.isNoneBlank(form.getBookId())){
record.setObjectId(form.getBookId());
}
if(StringUtils.isNoneBlank(form.getName())){
record.setName(form.getName());
}
if(StringUtils.isNoneBlank(form.getIsbn())){
record.setIsbn(form.getIsbn());
}
if(StringUtils.isNotBlank(form.getAuthor())){
record.setAuthor(form.getAuthor());
}
List<Contract> list = contractMapper.getProportionXS(form);
if(list != null && list.size()>0){
Contract c = list.get(0);
bd = c.getProportion();
}
return bd;
}
/***
* 通过图书名 ISBN 获取 合同信息
*/
@Override
public Integer getContract(QueryProportionByBookForm form) {
Integer cType = null;
List<Contract> list = contractMapper.getProportion(form);
if(list != null && list.size()>0){
Contract c = list.get(0);
//获取预付版税
cType = c.getContractType();
}
return cType;
}
/**
* 获取预付版税
*/
@Override
public BigDecimal getPre(QueryProportionByBookForm form) {
BigDecimal bd = null;
BigDecimal yf = new BigDecimal(0);
List<ContractRoyalty> list = contractMapper.getPre(form);
if(list != null && list.size()>0){
ContractRoyalty c = list.get(0);
//获取预付版税
bd = c.getAdvanceRoyalty();
return bd;
}
return yf;
}
}
package com.zrqx.statistics.bg.manage.contract;
import java.util.List;
import com.zrqx.core.form.statistics.contract.CustomFile;
import com.zrqx.core.model.statictics.ContractFile;
import com.zrqx.core.model.statictics.ContractFolder;
import com.zrqx.core.service.BaseService;
/**
* 自定义文件夹关联自定义文件
*/
public interface ContractFileManage extends BaseService<ContractFile, String> {
/**
* 保存自定义文件
* @param list
* @param folder
* @return
*/
Integer saveCustomFile(List<CustomFile> list, ContractFolder folder);
/**
* 根据合同删除关联文件
* @param list
* @return
*/
Integer delete(List<ContractFolder> list);
/**
* 根据自定义文件夹id获取自定义文件列表
* @param id
* @return
*/
List<ContractFile> getFileList(String folderId);
}
package com.zrqx.statistics.bg.manage.contract;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.form.statistics.contract.CustomFile;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.ContractFile;
import com.zrqx.core.model.statictics.ContractFolder;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.statistics.bg.mapper.contract.ContractFileMapper;
/**
* 自定义文件夹关联自定义文件
*/
@Service
public class ContractFileManageImpl extends BaseServiceImpl<ContractFile,String> implements ContractFileManage{
@Autowired
private ContractFileMapper mapper;
@Override
public BaseMapper<ContractFile> getMapper() {
return mapper;
}
@Override
public Integer saveCustomFile(List<CustomFile> list, ContractFolder folder) {
int result = 0;
if(list != null){
//先删除之前的关联
ContractFile deleteRecord = new ContractFile();
deleteRecord.setFolderId(folder.getId());
delete(deleteRecord);
//重新添加关联信息
for(CustomFile cf : list){
ContractFile file = new ContractFile();
file.setCreateTime(new Date());
file.setFolderId(folder.getId());
file.setFileId(cf.getFileId());
file.setName(cf.getName());
insert(file);
result++;
}
}
return result;
}
@Override
public Integer delete(List<ContractFolder> list) {
int result = 0;
if(list != null){
for(ContractFolder folder : list){
//先删除之前的关联
ContractFile deleteRecord = new ContractFile();
deleteRecord.setFolderId(folder.getId());
delete(deleteRecord);
}
}
return result;
}
@Override
public List<ContractFile> getFileList(String folderId) {
ContractFile record = new ContractFile();
record.setFolderId(folderId);
return select(record);
}
}
package com.zrqx.statistics.bg.manage.contract;
import java.util.List;
import com.zrqx.core.form.statistics.contract.CustomFolder;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractFolder;
import com.zrqx.core.service.BaseService;
import com.zrqx.core.vo.statistics.contract.ContractFolderVo;
/**
* 合同关联自定义文件夹
*/
public interface ContractFolderManage extends BaseService<ContractFolder, String> {
/**
* 保存合同关联的自定义文件夹
* @param folderList
* @param c 合同
* @return
*/
Integer saveCustomFolder(List<CustomFolder> folderList, Contract c);
/**
* 根据合同id获取自定义文件夹列表
* @param contractId
* @return
*/
List<ContractFolderVo> getFolderList(String contractId);
}
package com.zrqx.statistics.bg.manage.contract;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.form.statistics.contract.CustomFolder;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractFolder;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.core.vo.statistics.contract.ContractFolderVo;
import com.zrqx.statistics.bg.mapper.contract.ContractFolderMapper;
/**
* 试卷详细
*/
@Service
public class ContractFolderManageImpl extends BaseServiceImpl<ContractFolder,String> implements ContractFolderManage{
@Autowired
private ContractFolderMapper mapper;
@Autowired
private ContractFileManage contractFileManage;
@Override
public BaseMapper<ContractFolder> getMapper() {
return mapper;
}
@Override
public Integer saveCustomFolder(List<CustomFolder> folderList, Contract c) {
int result = 0;
if(folderList != null){
//先删除之前的关联
ContractFolder deleteRecord = new ContractFolder();
deleteRecord.setContractId(c.getId());
contractFileManage.delete(select(deleteRecord));
delete(deleteRecord);
//重新添加关联信息
for(CustomFolder cf : folderList){
ContractFolder folder = new ContractFolder();
folder.setContractId(c.getId());
folder.setCreateTime(new Date());
folder.setName(cf.getName());
insert(folder);
contractFileManage.saveCustomFile(cf.getList(),folder);
result ++ ;
}
}
return result;
}
@Override
public List<ContractFolderVo> getFolderList(String contractId) {
List<ContractFolderVo> result = new ArrayList<ContractFolderVo>();
ContractFolder record = new ContractFolder();
record.setContractId(contractId);
List<ContractFolder> folderList = select(record);
for(ContractFolder cf : folderList){
ContractFolderVo vo = JSON.toJavaObject((JSONObject)JSON.toJSON(cf), ContractFolderVo.class);
vo.setList(contractFileManage.getFileList(cf.getId()));
result.add(vo);
}
return result;
}
}
package com.zrqx.statistics.bg.manage.contract;
import java.util.List;
import com.zrqx.core.form.resource.bg.BatchDeleteForm;
import com.zrqx.core.form.statistics.client.ContractClientForm;
import com.zrqx.core.form.statistics.client.ContractResoureceOnSaleFrom;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractResource;
import com.zrqx.core.service.BaseService;
/**
* 合同关联资源
*/
public interface ContractResourceManage extends BaseService<ContractResource, String> {
/**
* 保存合同关联资源信息
* @param list
* @param c
* @return
*/
Integer saveResource(List<ContractResource> list, Contract c);
/**
* 保存远程推送来的合同和资源关联信息
* @param form
* @return
*/
Integer saveOrUpdateContractResource(ContractClientForm form);
/**
* 批量修改远程推送来资源关联信息(上下架状态)
* @param form
* @return
*/
Integer UpdateContractResourceOnsale(ContractResoureceOnSaleFrom form);
/**
* 根据合同id获取关联资源列表
* @param id
* @return
*/
List<ContractResource> getResourceList(String contractId);
}
package com.zrqx.statistics.bg.manage.contract;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.form.resource.bg.BatchDeleteForm;
import com.zrqx.core.form.statistics.client.ContractClientForm;
import com.zrqx.core.form.statistics.client.ContractResoureceOnSaleFrom;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractResource;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.statistics.bg.mapper.contract.ContractResourceMapper;
import tk.mybatis.mapper.entity.Example.Criteria;
/**
* 合同关联资源
*/
@Service
public class ContractResourceManageImpl extends BaseServiceImpl<ContractResource, String>
implements ContractResourceManage {
@Autowired
private ContractResourceMapper mapper;
@Override
public BaseMapper<ContractResource> getMapper() {
return mapper;
}
@Override
public Integer saveResource(List<ContractResource> list, Contract c) {
int result = 0;
if (list != null) {
// 先删除之前的关联
ContractResource deleteRecord = new ContractResource();
deleteRecord.setContractId(c.getId());
delete(deleteRecord);
// 重新添加关联信息
for (ContractResource cr : list) {
cr.setCreateTime(new Date());
cr.setContractId(c.getId());
if (cr.getOnsale() == null) {
// 如果没有传上下架状态,默认下架
cr.setOnsale(2);
}
insert(cr);
result++;
}
}
return result;
}
@Override
public Integer saveOrUpdateContractResource(ContractClientForm form) {
int result = 0;
// 合同id list
// 先删除之前的关联
List<String> list = form.getList();
if (list != null) {
for (String id : list) {
// 先删除合同关联资源的ID
ContractResource deleteRecord = new ContractResource();
deleteRecord.setContractId(id);
deleteRecord.setObjectId(form.getObjectId());
delete(deleteRecord);
// 在添加资源
ContractResource record = JSON.toJavaObject((JSONObject) JSON.toJSON(form), ContractResource.class);
record.setContractId(id);
List<ContractResource> crlist = mapper.select(record);
if (crlist == null || crlist.size() <= 0) {
if (form.getOnsale() == null) {
record.setOnsale(2);
}
mapper.insert(record);
}
}
}
return result;
}
@Override
public List<ContractResource> getResourceList(String contractId) {
ContractResource record = new ContractResource();
record.setContractId(contractId);
List<ContractResource> list = select(record);
// 数据库表和资源表命名不统一,创建临时字段方便前台获取
for (ContractResource contractResource : list) {
contractResource.setType(contractResource.getObjectType());
contractResource.setGoodsStatus(contractResource.getOnsale());
}
return list;
}
@Override
public Integer UpdateContractResourceOnsale(ContractResoureceOnSaleFrom form) {
int result = 0;
ContractResource record = null;
if (form.getIds() != null) {
record = new ContractResource();
// 上架下架状态(1:上架 2:下架)
record.setOnsale(form.getOnsale());
// 资源id
createCriteria().andIn("objectId", form.getIds());
// 修改资源id上下架状态
mapper.updateByExampleSelective(record, example);
}
return result;
}
}
package com.zrqx.statistics.bg.manage.contract;
import java.util.List;
import com.zrqx.core.form.statistics.contract.ContractRoyaltyForm;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractRoyalty;
import com.zrqx.core.service.BaseService;
/**
* 合同关联版税管理信息
*/
public interface ContractRoyaltyManage extends BaseService<ContractRoyalty, String> {
/**
* 保存合同关联版税管理信息
* @param royaltyList
* @param c
* @return
*/
Integer saveContractRoyalty(List<ContractRoyaltyForm> royaltyList, Contract c);
/**
* 根据合同id获取关联版税管理信息
* @param id
* @return
*/
List<ContractRoyalty> getContractRoyaltyList(String contractId);
}
package com.zrqx.statistics.bg.manage.contract;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.form.statistics.contract.ContractRoyaltyForm;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractRoyalty;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.core.util.DateUtils;
import com.zrqx.statistics.bg.mapper.contract.ContractRoyaltyMapper;
/**
* 合同关联版税管理信息
*/
@Service
public class ContractRoyaltyManageImpl extends BaseServiceImpl<ContractRoyalty,String> implements ContractRoyaltyManage{
@Autowired
private ContractRoyaltyMapper mapper;
@Override
public BaseMapper<ContractRoyalty> getMapper() {
return mapper;
}
@Override
public Integer saveContractRoyalty(List<ContractRoyaltyForm> royaltyList, Contract c) {
int result = 0;
if(royaltyList != null){
//先删除之前的关联
ContractRoyalty record = new ContractRoyalty();
record.setContractId(c.getId());
mapper.delete(record);
//重新添加关联信息
for(ContractRoyaltyForm crf : royaltyList){
ContractRoyalty cr = JSON.toJavaObject((JSONObject)JSON.toJSON(crf), ContractRoyalty.class);
cr.setContractId(c.getId());
cr.setCreateTime(new Date());
if(StringUtils.isNotBlank(crf.getPayTime())){
cr.setPayTime(DateUtils.strToDateTime(crf.getPayTime(), DateUtils.DATE_FORMAT_YYYY_MM_DD));
}
insert(cr);
result++;
}
}
return result;
}
@Override
public List<ContractRoyalty> getContractRoyaltyList(String contractId) {
ContractRoyalty record = new ContractRoyalty();
record.setContractId(contractId);
return select(record);
}
}
package com.zrqx.statistics.bg.mapper.contract;
import org.apache.ibatis.annotations.Mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.AlertTime;
/**
* 合同提醒时间
* @author ydm
*
*/
@Mapper
public interface AlertTimeMapper extends BaseMapper<AlertTime>{
}
package com.zrqx.statistics.bg.mapper.contract;
import org.apache.ibatis.annotations.Mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.ContractConnect;
/**
* 合同关联合同
* @author ydm
*
*/
@Mapper
public interface ContractConnectMapper extends BaseMapper<ContractConnect>{
}
package com.zrqx.statistics.bg.mapper.contract;
import org.apache.ibatis.annotations.Mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.ContractFile;
/**
* 自定义文件夹关联自定义文件
* @author ydm
*
*/
@Mapper
public interface ContractFileMapper extends BaseMapper<ContractFile>{
}
package com.zrqx.statistics.bg.mapper.contract;
import org.apache.ibatis.annotations.Mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.ContractFolder;
/**
* 合同关联自定义文件夹
* @author ydm
*
*/
@Mapper
public interface ContractFolderMapper extends BaseMapper<ContractFolder>{
}
package com.zrqx.statistics.bg.mapper.contract;
import org.apache.ibatis.annotations.Mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.ContractResource;
/**
* 自定义文件夹关联自定义文件
* @author ydm
*
*/
@Mapper
public interface ContractResourceMapper extends BaseMapper<ContractResource>{
}
package com.zrqx.statistics.bg.mapper.contract;
import org.apache.ibatis.annotations.Mapper;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.ContractRoyalty;
/**
* 合同关联版税管理信息
* @author ydm
*
*/
@Mapper
public interface ContractRoyaltyMapper extends BaseMapper<ContractRoyalty>{
}
package com.zrqx.statistics.bg.mapper.contract;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.form.statistics.client.ContractDateFrom;
import com.zrqx.core.form.statistics.client.QueryClientContractForm;
import com.zrqx.core.form.statistics.contract.QueryContractForm;
import com.zrqx.core.form.statistics.contract.QueryProportionByBookForm;
import com.zrqx.core.form.statistics.financial.TaxpointFrom;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractFile;
import com.zrqx.core.model.statictics.ContractRoyalty;
import com.zrqx.core.model.statictics.FinaancialManage.TaxPoint;
import com.zrqx.core.vo.statistics.contract.BookContractVo;
import com.zrqx.core.vo.statistics.contract.client.ContractVo;
/**
* 税点
* @author rjy
*
*/
@Mapper
public interface TaxPointMapper extends BaseMapper<TaxPoint>{
@Select("<script>"
+ " select taxpoint "
+ " from sta_taxpoint where 1=1 "
+ "<if test='"+NOTBLANK+"(form.saledate) '>"
+ " and DATE_FORMAT(#{form.saledate},'%Y-%m-%d')&lt;=DATE_FORMAT(startDate,'%Y-%m-%d') "
+ " and DATE_FORMAT(#{form.saledate},'%Y-%m-%d')&gt;=DATE_FORMAT(endDate,'%Y-%m-%d') "
+ "</if>"
+ "<if test='"+NOTBLANK+"(form.siteType) '>"
+ " and siteType = #{form.siteType}"
+ "</if>"
+ " LIMIT 1"
+ "</script>")
Integer get(@Param("form")QueryProportionByBookForm form);
}
package com.zrqx.statistics.bg.mapper.numStatistics;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.form.statistics.CountForm;
import com.zrqx.core.form.statistics.TableForm;
import com.zrqx.core.form.statistics.WaitExamineForm;
import com.zrqx.core.vo.statistics.numStatistics.SelectNumVo;
import com.zrqx.core.vo.works.door.WaitExamineVo;
@Mapper
public interface NumStatisticsMapper{
/** 数量 */
@Select("<script>"
+ "SELECT COUNT(id) FROM res_${table.name} s WHERE 1=1 "
+ "<if test = 'form.departmentId != null'>"
+ "and s.${table.departmentId} = #{form.departmentId} "
+ "</if>"
+ "<if test = 'form.time == null'>"
+ " and s.${table.uploadTime} Between #{form.beginTime} and #{form.endTime} "
+ "</if>"
+ "<if test = 'form.time != null'>"
+ " and s.${table.uploadTime} >= DATE_SUB(NOW(), INTERVAL #{form.time} DAY)"
+ "</if>"
+ "</script>")
int countNum(@Param("form")CountForm form,@Param("table")TableForm table);
/** 种类 */
@Select("<script>"
+ "SELECT COUNT(*) FROM (SELECT a.code FROM "
+ "(SELECT d.code FROM res_${table.name} s ,res_${table.name}_diy_type d "
+ "WHERE s.id = d.objectId "
+ "<if test = 'form.departmentId != null'>"
+ "and s.${table.departmentId} = #{form.departmentId} "
+ "</if>"
+ "<if test = 'form.time == null'>"
+ " and s.${table.uploadTime} Between #{form.beginTime} and #{form.endTime} "
+ "</if>"
+ "<if test = 'form.time != null'>"
+ " and s.${table.uploadTime} >= DATE_SUB(NOW(), INTERVAL #{form.time} DAY) "
+ "</if>"
+ " ) a GROUP BY a.code) c "
+ "</script>")
int countClass(@Param("form")CountForm form,@Param("table")TableForm table);
/** 下载量*/
@Select("<script>"
+ "</script>")
int download();
/** 数据库总数据量*/
@Select("<script>"
+ "SELECT COUNT(id) FROM res_${tableName}"
+ "</script>")
int count(@Param("tableName")String tableName);
/** 各部门资源对比 */
@Select("<script>"
+ "SELECT departmentId,num,resourceType FROM "
+ "(SELECT DATE_FORMAT(${table.uploadTime},'%Y') uploadTime,${table.departmentId} departmentId,COUNT(id) num,resourceType "
+ "FROM res_${table.name} s GROUP BY DATE_FORMAT(${table.uploadTime},'%Y'),${table.departmentId}) a "
+ "WHERE uploadTime = #{year} "
+ "</script>")
List<SelectNumVo> contrast(@Param("year")String year,@Param("table")TableForm table);
/** 产品数量*/
@Select("<script>"
+ "SELECT COUNT(id) FROM res_Diy_Type WHERE parentId = 0 "
+ "</script>")
int product();
/** 待审核事物,远程调用*/
@Select("<script>"
+ "SELECT COUNT(id) num,resourceType FROM res_${table.name} s WHERE ${table.statusName} = '${table.status}' "
+ "</script>")
WaitExamineVo waitExamine(@Param("table")WaitExamineForm table);
}
package com.zrqx.statistics.bg.mapper.statisticalAnalysis;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.form.statistics.BookGroupFrom;
import com.zrqx.core.form.statistics.QueryBookGroupFrom;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.BookGroupInfo;
import com.zrqx.core.model.statictics.BookSalesInfo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookGroupSplitVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookGroupVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookSalesSplitVo;
@Mapper
public interface BookGroupStatisticsMapper extends BaseMapper<BookGroupInfo>{
/** 分页查询*/
@Select("<script>"
+ "SELECT id,name,isbn,author,sum,sum(sales) sales,reserve2,str_to_date(saledate, '%Y-%m-%d')orderstart,str_to_date(saledate, '%Y-%m-%d')orderend FROM sta_book_group_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(form.name) '>"
+ "and name like concat(#{form.name},'%') "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(form.orderstart)'>"
+ "and DATE_FORMAT(str_to_date(saledate, '%Y-%m-%d'),'%Y-%m') &gt;= #{form.orderstart} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(form.orderend)'>"
+ "and DATE_FORMAT(str_to_date(saledate, '%Y-%m-%d'),'%Y-%m') &lt;= #{form.orderend} "
+ "</if>"
+ "<if test='form.sitetype != null '>"
+ "and sitetype = #{form.sitetype} "
+ "</if>"
+ "<if test='form.reserve2 != null '>"
+ "and reserve2 = #{form.reserve2} "
+ "</if>"
+ " GROUP BY name,author "
+ "</script>")
List<BookGroupVo> query(@Param("form")QueryBookGroupFrom form);
/**查询套组数据*/
@Select("<script>"
+ "SELECT * FROM sta_book_sales_info where isbn is null "
+ "</script>")
List<BookSalesInfo> queryGroup();
/**查询套组关联图书数据*/
@Select("<script>"
+ "SELECT a.id,a.name,a.isbn,a.author,a.upState,b.name groupname,YEAR(saledate) saledate FROM sta_book_relation a,sta_book_group_info b "
+ "where 1 =1 and a.GROUPid=b.id"
+ "<if test='"+NOTBLANK+"(form.id) '>"
+ "and a.groupid = #{form.id} "
+ "</if>"
+ " GROUP BY name,isbn "
+ "</script>")
List<BookGroupSplitVo> queryRelation(@Param("form")BookGroupFrom form);
/**查询套组拆分数据*/
@Select("<script>"
+ "SELECT id,sitetype,sum,sum(sales)sales,reserve3,YEAR(saledate)orderstart from sta_book_group_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(form.name) '>"
+ "and name = #{form.name} "
+ "</if>"
+ "GROUP BY YEAR(saledate)"
+ "</script>")
List<BookSalesSplitVo> querySplit(@Param("form")BookGroupFrom form);
}
package com.zrqx.statistics.bg.mapper.statisticalAnalysis;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.BookRelationInfo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookGroupSplitVo;
@Mapper
public interface BookRelationMapper extends BaseMapper<BookRelationInfo>{
/**查询是否关联*/
@Select("<script>"
+ "SELECT id,name,author,isbn FROM sta_book_relation "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(groupId) '>"
+ " and groupId = #{groupId} "
+ "</if>"
+ "</script>")
List<BookGroupSplitVo> queryIsGroup(@Param("groupId")String groupId);
}
package com.zrqx.statistics.bg.mapper.statisticalAnalysis;
import java.util.List;
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 com.zrqx.core.form.statistics.financial.BookFrom;
import com.zrqx.core.form.statistics.financial.FinancialFrom;
import com.zrqx.core.form.statistics.financial.SaveRoyaltyFrom;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.FinaancialManage.FinancialRecordInfo;
import com.zrqx.core.vo.statistics.financial.FinancialManageVo;
import com.zrqx.core.vo.statistics.financial.FinancialRecordVo;
import com.zrqx.core.vo.statistics.financial.RoyaltyInfoVo;
import com.zrqx.core.vo.statistics.gateway.BookSaleRankingVo;
@Mapper
public interface FinancialManageMapper extends BaseMapper<FinancialRecordInfo>{
/** 平台结算查询*/
@Select("<script>"
+ "SELECT id,name,start,MAX(timeaccount)timeaccount,realitytime,shouldPrice,realityprice,shouldPrice-realityprice AS errorPrice,updatetime from sta_book_financial_record_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(form.name) '>"
+ "and name like concat(#{form.name},'%') "
+ "</if>"
+ "GROUP BY name"
+ "</script>")
List<FinancialManageVo> query(@Param("form")FinancialFrom form);
/** 平台结算记录查询*/
@Select("<script>"
+ "SELECT id,name,start,timeaccount,shouldPrice,realityprice,shouldPrice-realityprice AS errorPrice,realitytime,updatetime,description from sta_book_financial_record_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(form.name) '>"
+ "and name like concat(#{form.name},'%') "
+ "</if>"
+ "GROUP BY timeaccount,sitetype order by timeaccount desc"
+ "</script>")
List<FinancialRecordVo> queryRecord(@Param("form")FinancialFrom form);
/**平台-查询上次已结算账期日期*/
@Select("<script>"
+ "SELECT * FROM sta_book_financial_record_info "
+ "where 1 =1 "
+ "<if test='"+ NOTBLANK +"(timeaccount)'>"
+ "and DATE_FORMAT(timeaccount, '%Y-%m') &lt;DATE_FORMAT(#{timeaccount}, '%Y-%m') "
+ "</if>"
+ "<if test='sitetype != null '>"
+ "and sitetype = #{sitetype} "
+ "</if>"
+ " and start='1'"
+ " ORDER BY DATE_FORMAT(timeaccount, '%Y-%m') desc LIMIT 0,1 "
+ "</script>")
FinancialRecordVo queryfinancial(@Param("sitetype")Integer sitetype,@Param("timeaccount") String timeaccount);
/**验证重复*/
@Select("<script>"
+ "SELECT id,name from sta_book_financial_record_info "
+ "where 1 =1 "
+ "<if test='name != null '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='"+ NOTBLANK +"(timeaccount)'>"
+ " and DATE_FORMAT(timeaccount,'%Y-%m') = DATE_FORMAT(#{timeaccount},'%Y-%m')"
+ "</if>"
+ "</script>")
FinancialRecordInfo check(@Param("name") String name,@Param("timeaccount")String timeaccount);
/** 图书销售排行查询*/
@Select("<script>"
+ "SELECT id,bookid,name,sum(sales)sales,"
+ " isbn,"
+ "author,"
+ "max(DATE_FORMAT(saledate, '%Y-%m-%d')) AS timeaccount"
+ " from sta_book_sales_info b "
+ " GROUP BY name "
+ "</script>")
List<BookSaleRankingVo> rankingQuery();
/** 电子出版物到期提醒查询*/
@Select("<script>"
+ "SELECT id,name,timeaccount from sta_book_financial_record_info "
+ "</script>")
List<BookSaleRankingVo> remindQuery();
/**查询平台结算表里数据*/
@Select("<script>"
+ "SELECT * from sta_book_financial_record_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name =#{name} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(sitetype) '>"
+ "and sitetype =#{sitetype} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(timeaccount) '>"
+ "and DATE_FORMAT(timeaccount,'%Y-%m') = DATE_FORMAT(#{timeaccount},'%Y-%m') "
+ "</if>"
+ "ORDER BY realitytime DESC LIMIT 0,1 "
+ "</script>")
FinancialManageVo getFinancial(@Param("name")String name,@Param("timeaccount")String timeaccount,@Param("sitetype")String sitetype );
/**查询平台结算表里数据*/
@Select("<script>"
+ "SELECT * from sta_book_financial_record_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name =#{name} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(timeaccount) '>"
+ "and DATE_FORMAT(timeaccount,'%Y-%m') &lt; DATE_FORMAT(#{timeaccount},'%Y-%m') "
+ "</if>"
+ "ORDER BY realitytime DESC LIMIT 0,1 "
+ "</script>")
FinancialManageVo getFinancialcha(@Param("name")String name,@Param("timeaccount")String timeaccount );
/** 平台结算查询*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name =#{name} "
+ "</if>"
+ " ORDER BY timeaccount desc LIMIT 1"
+ "</script>")
SaveRoyaltyFrom queryRoyalty(@Param("name")String name);
/**获取平台日志信息是否重复*/
@Select("<script>"
+ "SELECT * from sta_book_financial_record_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='"+NOTBLANK+"(saledate) '>"
+ "and DATE_FORMAT(timeaccount,'%Y-%m') = DATE_FORMAT(#{saledate},'%Y-%m')"
+ "</if>"
+ "</script>")
FinancialRecordInfo selectfinancial(@Param("name") String name,@Param("saledate") String saledate);
/** 查询那些平台结算过*/
@Select("<script>"
+ "SELECT * from sta_book_financial_record_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(timeaccount) '>"
+ "and DATE_FORMAT(timeaccount,'%Y-%m') &gt;= DATE_FORMAT(#{timeaccount},'%Y-%m')"
+ "</if>"
+ " and start='1'"
+ " GROUP BY sitetype "
+ "</script>")
List<FinancialRecordInfo> selectSite(@Param("timeaccount")String timeaccount);
}
package com.zrqx.statistics.bg.mapper.statisticalAnalysis;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.form.statistics.financial.DateilsFrom;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.FinaancialManage.RoyaltyDetailsInfo;
import com.zrqx.core.model.statictics.FinaancialManage.RoyaltyInfo;
import com.zrqx.core.vo.statistics.financial.GetRoyaltyInfoVo;
import com.zrqx.core.vo.statistics.financial.RoyaltyInfoVo;
@Mapper
public interface RoyaltyDetailsMapper extends BaseMapper<RoyaltyDetailsInfo>{
/**版税结算查询*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(form.name) '>"
+ "and name =#{form.name} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(form.isbn) '>"
+ "and isbn =#{form.isbn} "
+ "</if>"
/* + "<if test='"+NOTBLANK+"(form.bookid) '>"
+ "and bookid =#{form.bookid} "
+ "</if>" */
+ "</script>")
List<RoyaltyInfoVo> royaltyDetailsQuery(@Param("form")DateilsFrom form);
@Select("<script>"
+ "SELECT id,name,(select isbn from sta_book_sales_info b where a.name=b.name and isbn is not null LIMIT 0,1)isbn,"
+ "(select author from sta_book_sales_info b where a.name=b.name and author is not null LIMIT 0,1)author from sta_book_sales_info a"
+ " where 1 =1 "
+ "<if test='"+NOTBLANK+"(form.name) '>"
+ "and name = #{form.name}"
+ "</if>"
+ "<if test='"+NOTBLANK+"(form.isbn) '>"
+ "and isbn = #{form.isbn} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(form.bookid) '>"
+ "and bookid = #{form.bookid} "
+ "</if>"
+ "ORDER BY id DESC LIMIT 0,1 "
+ "</script>")
GetRoyaltyInfoVo getRoyalty(@Param("form")DateilsFrom form);
/**查询日志表里数据*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name =#{name} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(isbn) '>"
+ "and isbn = #{isbn} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(timeaccount) '>"
+ " and DATE_FORMAT(timeaccount,'%Y-%m') = DATE_FORMAT(#{timeaccount},'%Y-%m') "
+ "</if>"
+ "ORDER BY realitytime DESC LIMIT 0,1 "
+ "</script>")
RoyaltyInfoVo selectDetail(@Param("name")String name ,@Param("isbn")String isbn,@Param("timeaccount")String timeaccount);
/**查询日志表里数据*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name =#{name} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(isbn) '>"
+ "and isbn = #{isbn} "
+ "</if>"
+ "<if test='"+NOTBLANK+"(state) '>"
+ "and state = #{state} "
+ "</if>"
+ "ORDER BY realitytime DESC LIMIT 0,1 "
+ "</script>")
RoyaltyInfoVo selectmaxDetail(@Param("name")String name ,@Param("isbn")String isbn,@Param("state")String state);
/**版税结算之前账期日期所有数据*/
@Select("<script>"
+ "SELECT id,name from sta_book_royalty_details_info a "
+ " where 1 =1 "
+ "<if test='"+ NOTBLANK +"(timeaccount)'>"
+ " and DATE_FORMAT(a.timeaccount,'%Y-%m') &gt;= DATE_FORMAT(#{timeaccount},'%Y-%m') "
+ "</if>"
+ "</script>")
List<RoyaltyDetailsInfo> Royalty(@Param("timeaccount")String timeaccount,@Param("sitetype")Integer sitetype);
/**版税结算导入验证重复*/
@Select("<script>"
+ "SELECT id,name from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='"+NOTBLANK+"(isbn) '>"
+ "and isbn = #{isbn} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(timeaccount)'>"
+ " and DATE_FORMAT(timeaccount,'%Y-%m') = DATE_FORMAT(#{timeaccount},'%Y-%m') "
+ "</if>"
+ "</script>")
List<RoyaltyDetailsInfo> checkRoyalty(@Param("name") String name,@Param("timeaccount")String timeaccount,@Param("isbn")String isbn);
}
package com.zrqx.statistics.bg.mapper.statisticalAnalysis;
import java.util.Date;
import java.util.List;
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 com.zrqx.core.form.statistics.financial.BookFrom;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.FinaancialManage.RoyaltyDetailsInfo;
import com.zrqx.core.model.statictics.FinaancialManage.RoyaltyInfo;
import com.zrqx.core.vo.statistics.financial.RoyaltyInfoVo;
@Mapper
public interface RoyaltyMapper extends BaseMapper<RoyaltyInfo>{
/**验证重复*/
@Select("<script>"
+ "SELECT id,name from sta_book_royalty_record_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='"+NOTBLANK+"(isbn) '>"
+ "and isbn = #{isbn} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(timeaccount)'>"
+ "and str_to_date(timeaccount, '%Y-%m-%d')= #{timeaccount} "
+ "</if>"
+ "</script>")
List<RoyaltyInfo> checkRoyalty(@Param("name") String name,@Param("timeaccount")String timeaccount,@Param("isbn")String isbn);
/**版税结算查询*/
/*@Select("<script>"
+ "SELECT id,bookid,name,state,issettle,timeaccount,realitytime,shouldPrice,realityprice,updatetime from sta_book_royalty_record_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(form.name) '>"
+ "and name like concat(#{form.name},'%') "
+ "</if>"
+ "<if test='"+NOTBLANK+"(form.isbn) '>"
+ "and isbn like concat(#{form.isbn},'%') "
+ "</if>"
+ "<if test='"+NOTBLANK+"(form.author) '>"
+ "and author like concat(#{form.author},'%') "
+ "</if>"
+ "</script>")
List<RoyaltyInfoVo> royaltyQuery(@Param("form")BookFrom form);*/
/**版税结算删除
* @return */
@Delete("<script>"
+ "DELETE from sta_book_royalty_details_info where id = #{id}"
+ "</script>")
void del(@Param("id")String id);
/**书名、账期日期删除版税结算
* @return */
@Delete("<script>"
+ "DELETE from sta_book_royalty_details_info where name = #{name} "
+ "and DATE_FORMAT(timeaccount,'%Y-%m') = DATE_FORMAT(#{saledate},'%Y-%m')"
+ "</script>")
void delname(@Param("name")String name,@Param("saledate")String saledate);
/**获取版税信息*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(id) '>"
+ "and id = #{id}"
+ "</if>"
+ "</script>")
RoyaltyInfoVo getRoyaltyInfo(@Param("id") String id);
/**获取版税信息*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='"+NOTBLANK+"(saledate) '>"
+ "and DATE_FORMAT(timeaccount,'%Y-%m') = DATE_FORMAT(#{saledate},'%Y-%m')"
+ "</if>"
+ "</script>")
RoyaltyInfoVo selectroyalty(@Param("name") String name,@Param("saledate") String saledate);
/**获取版税信息上次结算信息*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='"+NOTBLANK+"(timeaccount) '>"
+ "and DATE_FORMAT(timeaccount,'%Y-%m-%d') &lt; DATE_FORMAT(#{timeaccount},'%Y-%m-%d')"
+ "</if>"
+ "<if test='"+NOTBLANK+"(realitytime) '>"
+ "and DATE_FORMAT(realitytime,'%Y-%m-%d') = DATE_FORMAT(#{realitytime},'%Y-%m-%d')"
+ "</if>"
+ " and Realitytime is not null order by Realitytime desc LIMIT 1"
+ "</script>")
RoyaltyInfoVo selectroyaltytime(@Param("name") String name,@Param("timeaccount") String timeaccount,@Param("realitytime") String realitytime);
/**获取版税信息上次账期信息*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='"+NOTBLANK+"(timeaccount) '>"
+ "and DATE_FORMAT(timeaccount,'%Y-%m-%d') &lt; DATE_FORMAT(#{timeaccount},'%Y-%m-%d')"
+ "</if>"
+ "<if test='"+NOTBLANK+"(realitytime) '>"
+ "and DATE_FORMAT(realitytime,'%Y-%m-%d') = DATE_FORMAT(#{realitytime},'%Y-%m-%d')"
+ "</if>"
+ " and state='1' order by timeaccount desc LIMIT 1"
+ "</script>")
RoyaltyInfoVo selectroyaltylasttime(@Param("name") String name,@Param("timeaccount") String timeaccount,@Param("realitytime") String realitytime);
/**账期之后的状态修改
* @return */
@Delete("<script>"
+ "UPDATE sta_book_royalty_details_info set staterecord='2' where name = #{name} "
+ "and DATE_FORMAT(timeaccount,'%Y-%m') &gt; DATE_FORMAT(#{saledate},'%Y-%m')"
+ "</script>")
void updatesate(@Param("name")String name,@Param("saledate")Date saledate);
/**获取版税信息上次账期信息*/
@Select("<script>"
+ "SELECT * from sta_book_royalty_details_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(name) '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='"+NOTBLANK+"(timeaccount) '>"
+ "and DATE_FORMAT(timeaccount,'%Y-%m-%d') &lt; DATE_FORMAT(#{timeaccount},'%Y-%m-%d')"
+ "</if>"
+ "<if test='"+NOTBLANK+"(staterecord) '>"
+ "and staterecord = #{staterecord}"
+ "</if>"
+ "</script>")
RoyaltyDetailsInfo selectstaterecord(@Param("name") String name,@Param("timeaccount") String timeaccount,@Param("staterecord") String staterecord);
}
package com.zrqx.statistics.bg.mapper.statisticalAnalysis;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.form.statistics.QueryYmxBookFrom;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.BookGroupInfo;
import com.zrqx.core.model.statictics.BookSalesInfo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.YmxStatisticsVo;
@Mapper
public interface YmxStatisticsMapper extends BaseMapper<BookSalesInfo>{
/** 分页查询*/
@Select("<script>"
+ "SELECT id,name,isbn,author,sum,price,sales,DATE_FORMAT(SaleDate,'%Y-%m-%d') orderstart FROM sta_book_sales_info "
+ "where 1 =1 "
+ "<if test='"+NOTBLANK+"(form.name) '>"
+ "and name like concat(#{form.name},'%') "
+ "</if>"
+ "<if test='"+NOTBLANK+"(form.isbn) '>"
+ "and isbn like concat(#{form.isbn},'%') "
+ "</if>"
+ "<if test='"+NOTBLANK+"(form.author) '>"
+ "and author like concat(#{form.author},'%') "
+ "</if>"
+ "<if test='form.sitetype != null '>"
+ "and sitetype = #{form.sitetype} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(form.orderstart)'>"
+ "and DATE_FORMAT(saledate, '%Y-%m') &gt;= #{form.orderstart} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(form.orderend)'>"
+ "and DATE_FORMAT(saledate, '%Y-%m') &lt;= #{form.orderend} "
+ "</if>"
+ "</script>")
List<YmxStatisticsVo> query(@Param("form")QueryYmxBookFrom form);
/**导入查询验证*/
@Select("<script>"
+ "SELECT id,name,author,isbn,price,sum,sales,sitetype FROM sta_book_sales_info "
+ "where 1 =1 "
+ "<if test='name != null '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='author != null '>"
+ "and author = #{author}"
+ "</if>"
+ "<if test='isbn != null '>"
+ "and isbn = #{isbn}"
+ "</if>"
+ "<if test='sitetype != null '>"
+ "and sitetype = #{sitetype} "
+ "</if>"
+ "<if test='saledate != null '>"
+ "and DATE_FORMAT(saledate, '%Y-%m') = DATE_FORMAT(#{saledate}, '%Y-%m') "
+ "</if>"
+ "<if test='reserve3 != null '>"
+ "and reserve3 = #{reserve3}"
+ "</if>"
+ "</script>")
List<BookSalesInfo> queryIs(@Param("name")String name,@Param("author")String author,@Param("isbn")String isbn,@Param("sitetype")Integer sitetype,@Param("saledate")String saledate,@Param("reserve3")String reserve3);
/**导入查询验证*/
@Select("<script>"
+ "SELECT id,name,author,isbn,sitetype,sales FROM sta_book_sales_info "
+ "where 1 =1 "
+ "<if test='name != null '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='isbn != null '>"
+ "and isbn = #{isbn}"
+ "</if>"
+ "<if test='sitetype != null '>"
+ "and sitetype = #{sitetype} "
+ "</if>"
+ "<if test='saledate != null '>"
+ "and DATE_FORMAT(saledate, '%Y-%m') = DATE_FORMAT(#{saledate}, '%Y-%m')"
+ "</if>"
+ "<if test='groupName != null '>"
+ "and reserve4 = #{groupName}"
+ "</if>"
+ "<if test='reserve3 != null '>"
+ "and reserve3 = #{reserve3}"
+ "</if>"
+ "</script>")
List<BookSalesInfo> queryIsRt(@Param("name")String name,@Param("isbn")String isbn,@Param("sitetype")Integer sitetype,@Param("saledate")String saledate, @Param("groupName")String groupName,@Param("reserve3")String reserve3);
/**导入查询验证*/
@Select("<script>"
+ "SELECT id,name,author,isbn,price,sum,sales,sitetype FROM sta_book_group_info "
+ "where 1 =1 "
+ "<if test='name != null '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='author != null '>"
+ "and author = #{author}"
+ "</if>"
+ "<if test='isbn != null '>"
+ "and isbn = #{isbn}"
+ "</if>"
+ "<if test='sitetype != null '>"
+ "and sitetype = #{sitetype} "
+ "</if>"
+ "<if test='saledate != null '>"
+ "and DATE_FORMAT(saledate, '%Y-%m') = DATE_FORMAT(#{saledate}, '%Y-%m') "
+ "</if>"
+ "<if test='reserve3 != null '>"
+ "and reserve3 = #{reserve3}"
+ "</if>"
+ "</script>")
List<BookGroupInfo> queryIstz(@Param("name")String name,@Param("author")String author,@Param("isbn")String isbn,@Param("sitetype")Integer sitetype,@Param("saledate")String saledate,@Param("reserve3")String reserve3);
/**导入查询验证*/
@Select("<script>"
+ "SELECT id,name,author,isbn,sitetype,sales FROM sta_book_group_info "
+ "where 1 =1 "
+ "<if test='name != null '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='isbn != null '>"
+ "and isbn = #{isbn}"
+ "</if>"
+ "<if test='sitetype != null '>"
+ "and sitetype = #{sitetype} "
+ "</if>"
+ "<if test='saledate != null '>"
+ "and DATE_FORMAT(saledate, '%Y-%m') = DATE_FORMAT(#{saledate}, '%Y-%m')"
+ "</if>"
+ "<if test='reserve3 != null '>"
+ "and reserve3 = #{reserve3}"
+ "</if>"
+ "</script>")
List<BookGroupInfo> queryIsRttz(@Param("name")String name,@Param("isbn")String isbn,@Param("sitetype")Integer sitetype,@Param("saledate")String saledate,@Param("reserve3")String reserve3);
/**网易导入验证重复*/
@Select("<script>"
+ "SELECT id,name,author,isbn ,sitetype,sales FROM sta_book_sales_info "
+ "where 1 =1 "
+ "<if test='name != null '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='author != null '>"
+ "and author = #{author}"
+ "</if>"
+ "<if test='orderStart != null '>"
+ "and saledate = #{orderStart}"
+ "</if>"
+ "<if test='sitetype != null '>"
+ "and sitetype = #{sitetype} "
+ "</if>"
+ "<if test='reserve3 != null '>"
+ "and reserve3 = #{reserve3}"
+ "</if>"
+ "</script>")
List<BookSalesInfo> queryIsWy(@Param("name")String name,@Param("author")String author,@Param("orderStart")String orderStart,@Param("sitetype")Integer sitetype,@Param("reserve3")String reserve3);
/**查询书、账期日期是否有一样的数据*/
@Select("<script>"
+ "SELECT id,name,author,isbn,sitetype,sales FROM sta_book_group_info "
+ "where 1 =1 "
+ "<if test='name != null '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='saledate != null '>"
+ "and DATE_FORMAT(saledate, '%Y-%m') = DATE_FORMAT(#{saledate}, '%Y-%m')"
+ "</if>"
+ "</script>")
List<BookGroupInfo> querySaledate(@Param("name")String name,@Param("saledate")String saledate);
/**查询书、账期日期是否有一样的数据*/
@Select("<script>"
+ "SELECT id,name,author,isbn,sitetype,sales FROM sta_book_sales_info "
+ "where 1 =1 "
+ "<if test='name != null '>"
+ "and name = #{name}"
+ "</if>"
+ "<if test='saledate != null '>"
+ "and DATE_FORMAT(saledate, '%Y-%m') = DATE_FORMAT(#{saledate}, '%Y-%m')"
+ "</if>"
+ "</script>")
List<BookSalesInfo> querybookSaledate(@Param("name")String name,@Param("saledate")String saledate);
}
package com.zrqx.statistics.bg.mapper.useStatistics;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.form.statistics.CountForm;
import com.zrqx.core.vo.statistics.useStatistics.UseCountVo;
@Mapper
public interface UseStatisticsMapper {
/** --*/
@Select("<script>"
+ "</script>")
List<UseCountVo> count(CountForm form);
}
package com.zrqx.statistics.bg.service.contract;
import com.zrqx.core.model.statictics.AlertTime;
import com.zrqx.core.service.BaseService;
public interface AlertTimeService extends BaseService<AlertTime, Integer>{
}
package com.zrqx.statistics.bg.service.contract;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.AlertTime;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.statistics.bg.mapper.contract.AlertTimeMapper;
@Service
public class AlertTimeServiceImpl extends BaseServiceImpl<AlertTime, Integer> implements AlertTimeService{
@Autowired
private AlertTimeMapper mapper;
@Override
public BaseMapper<AlertTime> getMapper() {
return mapper;
}
}
package com.zrqx.statistics.bg.service.contract;
import java.math.BigDecimal;
import java.util.List;
import com.zrqx.core.form.resource.bg.BatchDeleteForm;
import com.zrqx.core.form.statistics.QueryErraceFrom;
import com.zrqx.core.form.statistics.client.ContractClientForm;
import com.zrqx.core.form.statistics.client.ContractResoureceOnSaleFrom;
import com.zrqx.core.form.statistics.client.QueryClientContractForm;
import com.zrqx.core.form.statistics.contract.QueryContractForm;
import com.zrqx.core.form.statistics.contract.QueryProportionByBookForm;
import com.zrqx.core.form.statistics.contract.SaveOrUpdateContractForm;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.service.BaseService;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.contract.BookContractVo;
import com.zrqx.core.vo.statistics.contract.client.ContractVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ExportbookVo;
public interface ContractService extends BaseService<Contract, String>{
/**
* 新增合同
* @param form
* @return
*/
Integer saveContract(SaveOrUpdateContractForm form);
/**
* 修改合同
* @param form
* @return
*/
Integer updateContract(SaveOrUpdateContractForm form);
/**
* 获取分页数据
* @param pageParam
* @param form
* @return
*/
PageInfo<BookContractVo> getPageInfo(PageParam pageParam, QueryContractForm form);
/**
* 远程调用获取合同列表
* @param pageParam
* @param form
* @return
*/
PageInfo<ContractVo> getClientPage(PageParam pageParam, QueryClientContractForm form);
/**
* 保存远程推送过来的合同关联资源的信息
* @param form
* @return
*/
Integer updateContractResource(ContractClientForm form);
/**
* 保存远程推送过来的合同关联资源的信息
* @param form
* @return
*/
Integer updateContractResourceOnSale(ContractResoureceOnSaleFrom form);
/**
* 修改合同到期日期
* @param form
* @return
*/
Integer updateContractDate(String id);
/**
* 批量删除
* @param form
* @return
*/
Integer delete(BatchDeleteForm form);
/**
* 获取合同详情
* @param oid
* @return
*/
ContractVo getById(String oid);
/**
* 获取销售合同列表
* @param pageParam
* @param form
* @return
*/
PageInfo<Contract> getPageSalesContract(PageParam pageParam, QueryContractForm form);
/**
* 获取分成比例
* @return
*/
BigDecimal getProportion(QueryProportionByBookForm form);
/**
* 获取合同类型
* @return
*/
Integer getContract(QueryProportionByBookForm form);
/**
* 获取预付版税
* @return
*/
BigDecimal getPre(QueryProportionByBookForm form);
/**
* 批量删除销售合同
* @param form
* @return
*/
Integer deleteSalesContract(BatchDeleteForm form);
/**
* 获取销售合同详情
* @param oid
* @return
*/
ContractVo getSalesContractById(String oid);
/**
*在售电子出版物到期提醒
* @param oid
* @return
*/
PageInfo<BookContractVo> getbookcontractInfo(PageParam pageParam, QueryContractForm form) ;
/**导出平台销售统计 */
List<BookContractVo> exportReport(QueryContractForm form);
}
package com.zrqx.statistics.bg.service.contract;
import java.math.BigDecimal;
import java.util.List;
import com.zrqx.core.form.resource.bg.BatchDeleteForm;
import com.zrqx.core.form.statistics.QueryErraceFrom;
import com.zrqx.core.form.statistics.client.ContractClientForm;
import com.zrqx.core.form.statistics.client.ContractResoureceOnSaleFrom;
import com.zrqx.core.form.statistics.client.QueryClientContractForm;
import com.zrqx.core.form.statistics.contract.QueryContractForm;
import com.zrqx.core.form.statistics.contract.QueryProportionByBookForm;
import com.zrqx.core.form.statistics.contract.SaveOrUpdateContractForm;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.FinaancialManage.TaxPoint;
import com.zrqx.core.service.BaseService;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.contract.BookContractVo;
import com.zrqx.core.vo.statistics.contract.client.ContractVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ExportbookVo;
public interface TaxPointService extends BaseService<TaxPoint, String>{
}
package com.zrqx.statistics.bg.service.contract;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.enums.statistics.ContractEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.exception.BusinessValidateException;
import com.zrqx.core.form.resource.bg.BatchDeleteContractForm;
import com.zrqx.core.form.resource.bg.BatchDeleteForm;
import com.zrqx.core.form.statistics.QueryErraceFrom;
import com.zrqx.core.form.statistics.client.ContractClientForm;
import com.zrqx.core.form.statistics.client.ContractDateFrom;
import com.zrqx.core.form.statistics.client.ContractResoureceOnSaleFrom;
import com.zrqx.core.form.statistics.client.ContractToResourceForm;
import com.zrqx.core.form.statistics.client.QueryClientContractForm;
import com.zrqx.core.form.statistics.contract.ContractRoyaltyForm;
import com.zrqx.core.form.statistics.contract.QueryContractForm;
import com.zrqx.core.form.statistics.contract.QueryProportionByBookForm;
import com.zrqx.core.form.statistics.contract.SaveOrUpdateContractForm;
import com.zrqx.core.form.statistics.financial.BookFrom;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.statictics.AlertTime;
import com.zrqx.core.model.statictics.Contract;
import com.zrqx.core.model.statictics.ContractFolder;
import com.zrqx.core.model.statictics.ContractResource;
import com.zrqx.core.model.statictics.ContractRoyalty;
import com.zrqx.core.model.statictics.FinaancialManage.TaxPoint;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.DateUtils;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.util.UUIDUtil;
import com.zrqx.core.vo.statistics.contract.BookContractVo;
import com.zrqx.core.vo.statistics.contract.client.ContractVo;
import com.zrqx.core.vo.statistics.financial.RoyaltyInfoVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookSalesInfoExportVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ExportbookVo;
import com.zrqx.statistics.bg.client.resource.ResourceClient;
import com.zrqx.statistics.bg.client.sysuser.SysuserClient;
import com.zrqx.statistics.bg.manage.contract.ContractConnectManage;
import com.zrqx.statistics.bg.manage.contract.ContractFileManage;
import com.zrqx.statistics.bg.manage.contract.ContractFolderManage;
import com.zrqx.statistics.bg.manage.contract.ContractResourceManage;
import com.zrqx.statistics.bg.manage.contract.ContractRoyaltyManage;
import com.zrqx.statistics.bg.mapper.contract.AlertTimeMapper;
import com.zrqx.statistics.bg.mapper.contract.ContractMapper;
import com.zrqx.statistics.bg.mapper.contract.TaxPointMapper;
import com.zrqx.statistics.bg.mapper.statisticalAnalysis.BookStatisticsMapper;
import tk.mybatis.mapper.entity.Example.Criteria;
@Service
public class TaxPointServiceImpl extends BaseServiceImpl<TaxPoint, String> implements TaxPointService {
@Autowired
private TaxPointMapper mapper;
public BaseMapper<TaxPoint> getMapper() {
return mapper;
}
}
package com.zrqx.statistics.bg.service.numStatistics;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.form.statistics.ContrastForm;
import com.zrqx.core.form.statistics.CountForm;
import com.zrqx.core.vo.statistics.numStatistics.NumCountVo;
import com.zrqx.core.vo.works.door.WaitExamineVo;
public interface NumStatisticsService{
/** 列表统计*/
JSONObject count(CountForm form);
/** 扇形统计*/
JSONObject fan();
/** 各部门资源对比*/
JSONObject contrast(ContrastForm form);
/** 资源总量*/
int total();
/** 产品种类*/
int product();
/** 待审核事物*/
List<WaitExamineVo> waitExamine();
}
package com.zrqx.statistics.bg.service.numStatistics;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.response.FacetField;
import org.apache.solr.client.solrj.response.FacetField.Count;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.enums.ResourceTypeEnum;
import com.zrqx.core.enums.statistics.StatisticsEnum;
import com.zrqx.core.form.statistics.ContrastForm;
import com.zrqx.core.form.statistics.CountForm;
import com.zrqx.core.form.statistics.TableForm;
import com.zrqx.core.form.statistics.WaitExamineForm;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.vo.sysuser.bg.dept.DepartmentVO;
import com.zrqx.core.vo.works.door.WaitExamineVo;
import com.zrqx.statistics.bg.client.sysuser.SysuserClient;
import com.zrqx.statistics.bg.mapper.numStatistics.NumStatisticsMapper;
@Service
public class NumStatisticsServiceImpl implements NumStatisticsService {
@Autowired
private NumStatisticsMapper mapper;
@Autowired
private SolrClient client;
@Autowired
private SysuserClient userClient;
@Override
public JSONObject count(CountForm form) {
String beginTime = form.getBeginTime();
if (beginTime == null) {
beginTime = "0001-01-01";
}
form.setBeginTime(beginTime);
String endTime = form.getEndTime();
if (endTime == null) {
endTime = "9999-12-31";
}
form.setEndTime(endTime + " 23:59:59");
HashMap<Integer, String> map = StatisticsEnum.getAllEnumMap();
HashMap<String, String> classMap = new HashMap<String, String>();
HashMap<String, String> numMap = new HashMap<String, String>();
HashMap<String, String> dowMap = new HashMap<String, String>();
JSONObject jo = new JSONObject();
classMap.put("static", "资源种类");
numMap.put("static", "资源数量");
dowMap.put("static", "资源下载量");
for (Integer key : map.keySet()) {
TableForm table = this.getTableForm(key);
int classNum = mapper.countClass(form, table);
classMap.put(StatisticsEnum.getName(key), classNum + "");
int num = mapper.countNum(form, table);
numMap.put(StatisticsEnum.getName(key), num + "");
// 下载量
}
jo.put("class", classMap);
jo.put("num", numMap);
jo.put("download", dowMap);
return jo;
}
/** 各部门资源对比 --折线图 */
@Override
public JSONObject contrast(ContrastForm form) {
CallBack<List<DepartmentVO>> callBack = userClient.getList();
List<DepartmentVO> departmentList = callBack.getData();
List<String> depNameList = new ArrayList();
List<Integer> depIdList = new ArrayList();
Map<String, Long> map = new HashMap();
departmentList.forEach(item -> {
depIdList.add(item.getDepartmentId());
depNameList.add(item.getDepartmentName());
});
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", depNameList);
JSONArray ja = new JSONArray();
if (form.getResourceType() != null) {
List<Long> numList = new ArrayList();
JSONObject jo = new JSONObject();
jo.put("name", ResourceTypeEnum.getName(form.getResourceType()));
jo.put("type", "line");
jo.put("stack", "总量");
StringBuffer sb = new StringBuffer();
sb.append("uploadTime:{" + form.getYear() + "-01-01T00:00:00Z" + " TO " + form.getYear()
+ "-12-31T23:59:59Z" + "}");
sb.append(" && resourceType:" + form.getResourceType());
SolrQuery sq = new SolrQuery();
sq.setQuery(sb.toString());
sq.setFacet(true);
sq.addFacetField(new String[] { "departmentId" });
sq.setFacetMissing(false);// 不统计null的值
sq.setFacetMinCount(1);
QueryResponse sr;
try {
sr = client.query(sq);
List<FacetField> facetFields = sr.getFacetFields();
for (FacetField item : facetFields) {
if (item.getName().equals("departmentId")) {
for (Count count : item.getValues()) {
map.put(count.getName(), count.getCount());
}
}
}
for (Integer item : depIdList) {
if (map.get(String.valueOf(item)) != null) {
numList.add(map.get(String.valueOf(item)));
} else {
numList.add(0L);
}
}
jo.put("data", numList);
ja.add(jo);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
for (String key : ResourceTypeEnum.getAllEnumMap().keySet()) {
List<Long> numList = new ArrayList();
JSONObject jo = new JSONObject();
jo.put("name", ResourceTypeEnum.getName(Integer.parseInt(key)));
jo.put("type", "line");
jo.put("stack", "总量");
StringBuffer sb = new StringBuffer();
sb.append("uploadTime:{" + form.getYear() + "-01-01T00:00:00Z" + " TO " + form.getYear()
+ "-12-31T23:59:59Z" + "}");
sb.append(" && resourceType:" + key);
SolrQuery sq = new SolrQuery();
sq.setQuery(sb.toString());
sq.setFacet(true);
sq.addFacetField(new String[] { "departmentId" });
sq.setFacetMissing(false);// 不统计null的值
sq.setFacetMinCount(1);
QueryResponse sr;
try {
sr = client.query(sq);
List<FacetField> facetFields = sr.getFacetFields();
for (FacetField item : facetFields) {
if (item.getName().equals("departmentId")) {
for (Count count : item.getValues()) {
map.put(count.getName(), count.getCount());
}
}
}
for (Integer item : depIdList) {
if (map.get(String.valueOf(item)) != null) {
numList.add(map.get(String.valueOf(item)));
} else {
numList.add(0L);
}
}
jo.put("data", numList);
ja.add(jo);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
jsonObject.put("series", ja);
return jsonObject;
}
/**
* 根据数据库编号,封装所需字段名
*
* @param code
* @return
*/
private TableForm getTableForm(int code) {
TableForm table = new TableForm();
String name = StatisticsEnum.getName(code);
if (code != StatisticsEnum.BOOK.getCode() && code != StatisticsEnum.PERIODICAL.getCode()) {
name += "_library";
}
table.setName(name);
String departmentId = "departmentId";
table.setDepartmentId(departmentId);
String uploadTime = "uploadTime";
if (code == StatisticsEnum.PERIODICAL.getCode()) {
uploadTime = "createTime";
}
table.setUploadTime(uploadTime);
return table;
}
/** 扇形统计 */
@Override
public JSONObject fan() {
HashMap<Integer, String> map = StatisticsEnum.getAllEnumMap();
List<String> nameList = new ArrayList<String>();
List<Map<String, String>> numlist =new ArrayList<Map<String,String>>();
JSONObject jo = new JSONObject();
for (Integer key : map.keySet()) {
Map<String, String> numMap = new HashMap<String, String>();
String tableName = StatisticsEnum.getName(key);
int num = mapper.count(tableName);
String name = ResourceTypeEnum.getName(key);
numMap.put("name", name);
numMap.put("value", num + "");
numlist.add(numMap);
nameList.add(name);
}
jo.put("nameList", nameList);
jo.put("numlist", numlist);
return jo;
}
/** 资源总量,远程调用 */
@Override
public int total() {
int num = 0;
for (int i = 1; i <= StatisticsEnum.values().length; i++) {
num += mapper.count(StatisticsEnum.getName(i));
}
return num;
}
/** 产品种类,远程调用 */
@Override
public int product() {
return mapper.product();
}
/** 待审核事物,远程调用 */
@Override
public List<WaitExamineVo> waitExamine() {
List<WaitExamineVo> list = new ArrayList<WaitExamineVo>();
for (int code = 1; code < StatisticsEnum.values().length; code++) {
if (code == StatisticsEnum.PERIODICAL.getCode()) {
continue;
}
WaitExamineForm table = new WaitExamineForm();
table.setName(StatisticsEnum.getName(code));
table.setStatus(0);
table.setStatusName("status");
if (code == StatisticsEnum.BOOK.getCode()) {
table.setStatus(1);
table.setStatusName("bookStatus");
}
WaitExamineVo vo = mapper.waitExamine(table);
list.add(vo);
}
return list;
}
}
package com.zrqx.statistics.bg.service.statisticalAnalysis;
import java.util.List;
import com.zrqx.core.form.statistics.BookGroupFrom;
import com.zrqx.core.form.statistics.QueryBookGroupFrom;
import com.zrqx.core.form.statistics.SaveBookGroupFrom;
import com.zrqx.core.form.statistics.UpdateBookGroupFrom;
import com.zrqx.core.model.statictics.BookGroupInfo;
import com.zrqx.core.service.BaseService;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookGroupSplitVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookGroupVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookSalesSplitVo;
public interface BookGroupStatisticsService extends BaseService<BookGroupInfo, Integer> {
/** 分页查询 */
PageInfo<BookGroupVo> page(QueryBookGroupFrom form, PageParam pageParam);
/** 关联图书查询 */
PageInfo<BookGroupSplitVo> queryRelation(BookGroupFrom form, PageParam pageParam);
/** 拆分查询 */
PageInfo<BookSalesSplitVo> querySplit(BookGroupFrom from, PageParam pageParam);
/** 修改金额 */
boolean updateSales (UpdateBookGroupFrom form);
/** 新增 */
boolean save(SaveBookGroupFrom form);
/** 取消关联 */
String delete(List<String> ids);
}
package com.zrqx.statistics.bg.service.statisticalAnalysis;
import java.util.List;
import com.zrqx.core.form.statistics.QueryBookFrom;
import com.zrqx.core.form.statistics.QueryErraceFrom;
import com.zrqx.core.form.statistics.financial.BookStatisticsInfoFrom;
import com.zrqx.core.model.resource.ebook.Book;
import com.zrqx.core.model.statictics.BookSalesInfo;
import com.zrqx.core.service.BaseService;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookReportVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.BookStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ExportbookVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.PlatformStatisticsVo;
import tk.mybatis.mapper.entity.Example;
public interface BookStatisticsService extends BaseService<BookSalesInfo, Integer> {
/** 分页查询 */
PageInfo<BookStatisticsVo> page(QueryBookFrom form, PageParam pageParam);
/**导出图书销售排行*/
List<BookStatisticsVo> exportBookStatistics(QueryBookFrom form);
/** 图书销售详情信息 */
BookStatisticsVo bookDetil(String bookid);
/** 图书详情信息 */
List<Book> bookInfo(QueryBookFrom form1);
/**销售趋势查询 */
BookReportVo report(QueryBookFrom form);
/**通过年查询 */
PageInfo<PlatformStatisticsVo> year(QueryErraceFrom form);
/**详情各平台销售统计 */
PageInfo<PlatformStatisticsVo> yearDetail(QueryErraceFrom form);
/**国际税收实务与案例查询 */
//PageInfo<QueryInfoVo> queryInfo(String id);
/**导出平台销售统计 */
List<ExportbookVo> exportReport(QueryErraceFrom form);
/**导出年度各平台销售报表 */
List<PlatformStatisticsVo> queryList(QueryErraceFrom form);
/**修改统计是否回款 */
String updateStatistics (BookStatisticsInfoFrom from);
}
package com.zrqx.statistics.bg.service.statisticalAnalysis;
import java.util.HashMap;
import java.util.List;
import com.zrqx.core.form.statistics.financial.BookFrom;
import com.zrqx.core.form.statistics.financial.DateilsFrom;
import com.zrqx.core.form.statistics.financial.FinancialFrom;
import com.zrqx.core.form.statistics.financial.SaveRecordFrom;
import com.zrqx.core.form.statistics.financial.SaveRoyaltyFrom;
import com.zrqx.core.form.statistics.financial.SaveTaxPointForm;
import com.zrqx.core.model.statictics.FinaancialManage.FinancialRecordInfo;
import com.zrqx.core.model.statictics.FinaancialManage.TaxPoint;
import com.zrqx.core.service.BaseService;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.financial.FinancialManageVo;
import com.zrqx.core.vo.statistics.financial.FinancialRecordVo;
import com.zrqx.core.vo.statistics.financial.GetRoyaltyInfoVo;
import com.zrqx.core.vo.statistics.financial.ImportFinancialExcelVo;
import com.zrqx.core.vo.statistics.financial.ImportRoyaltyExcelVo;
import com.zrqx.core.vo.statistics.financial.RoyaltyInfoVo;
import com.zrqx.core.vo.statistics.gateway.BookSaleRankingVo;
public interface FinancialManageService extends BaseService<FinancialRecordInfo, Integer> {
/** 版税结算分页查询 */
PageInfo<RoyaltyInfoVo> royaltyQuery(BookFrom form ,PageParam pageParam);
/** 版税结算查询 */
List<RoyaltyInfoVo> royaltyQueryExport(BookFrom form);
/** 版税结算分页查询 */
HashMap<Integer, String> siteQuery(String timeaccount );
/**获取版税信息 */
GetRoyaltyInfoVo royaltyDetails(DateilsFrom form );
/** 版税结算详情分页查询 */
PageInfo<RoyaltyInfoVo> royaltyDetailsQuery(DateilsFrom form ,PageParam pageParam);
/** 平台结算查询 */
List<FinancialManageVo> page(FinancialFrom form);
/** 平台结算记录查询 */
PageInfo<FinancialRecordVo> queryRecord(FinancialFrom form ,PageParam pageParam);
/** 版税结算修改*/
boolean updateRoyalty(SaveRoyaltyFrom form);
/** 平台结算保存到记录表*/
boolean save( SaveRecordFrom form);
/**版税结算删除记录 */
String royaltyDelete(List<String> ids);
/**税点设置 */
Integer saveTaxPoint(SaveTaxPointForm from);
/**税点删除 */
Integer deleteTaxPoint(List <String> ids);
/**税点查询 */
PageInfo<TaxPoint> taxPoint(Integer siteType, PageParam pageParam);
/**书名、账期日期删除版税结算记录 */
String royaltyNameDelete(String name,String saledate);
/**书名、账期日期查询版税结算记录 */
RoyaltyInfoVo selectroyalty(String name,String saledate);
/**书名、查询版税结算记录上次结算日期 */
RoyaltyInfoVo selectroyaltytime(String name,String timeaccount,String realitytime);
/**平台结算删除记录 */
String batchDelete(List<String> ids);
/**导入平台结算数据*/
Integer saveList(List<ImportFinancialExcelVo> list);
/**导入版税结算数据*/
Integer saveRoyaltyList(List<ImportRoyaltyExcelVo> list);
/**验证重复导入 */
FinancialRecordInfo check(String name,String timeaccount);
/**图书排行查询 */
PageInfo<BookSaleRankingVo> rankingQuery(PageParam pageParam);
/**电子出版物提醒查询 */
PageInfo<BookSaleRankingVo> remindQuery(PageParam pageParam);
}
package com.zrqx.statistics.bg.service.statisticalAnalysis;
import java.util.Date;
import java.util.List;
import com.zrqx.core.form.statistics.QueryYmxBookFrom;
import com.zrqx.core.model.statictics.BookGroupInfo;
import com.zrqx.core.model.statictics.BookSalesInfo;
import com.zrqx.core.service.BaseService;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportBdExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportDdExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportDedaoExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportExcelCXStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportExcelJDStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportExcelYmxStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportRtExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.ImportZyExcelStatisticsVo;
import com.zrqx.core.vo.statistics.statisticalAnalysis.YmxStatisticsVo;
public interface YmxStatisticsService extends BaseService<BookSalesInfo, Integer> {
/** 分页查询 */
PageInfo<YmxStatisticsVo> page(QueryYmxBookFrom form, PageParam pageParam);
/** 批量删除 */
String batchDelete(List<String> ids);
/** excel导入数据验证重复 */
List<BookSalesInfo> selectVali(String name ,String author,String isbn,Integer sitetype,String saledate);
/** 人天excel导入数据验证重复 */
List<BookSalesInfo> selectValiRt(String name ,String isbn,Integer sitetype,String saledate);
/** excel导入数据验证重复 */
List<BookGroupInfo> selectValitz(String name ,String author,String isbn,Integer sitetype,String saledate);
/** 人天excel导入数据验证重复 */
List<BookGroupInfo> selectValiRttz(String name ,String isbn,Integer sitetype,String saledate);
/** 网易excel导入数据验证重复 */
List<BookSalesInfo> selectValiWy(String name ,String author,String orderStart,Integer sitetype);
/**查询套组数据 */
List<BookSalesInfo> groupDate();
/**
* 导入销售数据
* @param list
* @return
*/
Integer saveList(List<ImportExcelYmxStatisticsVo> list);
/**
* 导入京东销售数据
* @param list
* @return
*/
Integer saveJDList(List<ImportExcelJDStatisticsVo> list);
/**
* 导入中轻销售数据
* @param list
* @return
*/
Integer saveZQList(List<ImportExcelCXStatisticsVo> list,String enumNmae,Integer code);
/**
* 导入百度销售数据
* @param list
* @return
*/
Integer saveBdList(List<ImportBdExcelStatisticsVo> list);
/**
* 导入人天销售数据
* @param list
* @return
*/
Integer saveRtList(List<ImportRtExcelStatisticsVo> list);
/**
* 导入掌阅销售数据
* @param list
* @return
*/
Integer saveZyList(List<ImportZyExcelStatisticsVo> list);
/**
* 导入当当销售数据
* @param list
* @return
*/
Integer saveDdList(List<ImportDdExcelStatisticsVo> list);
/**
* 导入得到销售数据
* @param list
* @return
*/
Integer saveDedaoList(List<ImportDedaoExcelStatisticsVo> list);
/**
* 导入网易销售数据
* @param list
* @return
*/
Integer saveWyList(List<String[]> list,Integer state);
}
package com.zrqx.statistics.bg.service.useStatistics;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.form.statistics.CountForm;
public interface UseStatisticsService {
/** 列表统计 */
JSONObject count(CountForm form);
}
package com.zrqx.statistics.bg.service.useStatistics;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.form.statistics.CountForm;
import com.zrqx.statistics.bg.mapper.useStatistics.UseStatisticsMapper;
@Service
public class UseStatisticsServiceImpl implements UseStatisticsService{
@Autowired
UseStatisticsMapper mapper;
@Override
public JSONObject count(CountForm form) {
return null;
}
}
package com.zrqx.statistics.commons;
import java.io.IOException;
import java.util.Enumeration;
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.zrqx.core.enums.ResponseCodeEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.model.sysuser.user.User;
import com.zrqx.core.util.JsonUtil.JsonUtil;
/**
* Redis消息管理 ,调用时不能用多线程调用
* @author lpf
* @date 2018年6月5日上午10:03:01
*/
@Component
public class Redis {
private static final String FG_TOKEN = "y-token";
private static final String BG_TOKEN = "x-token";
@Autowired
StringRedisTemplate stringRedisTemplate;
public void updateDatebase(int num) {
JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory();
jedisConnectionFactory.setDatabase(num);
stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);
}
/**
* 获取后台登录用户信息
*
* @return
*/
public User getUser() {
return getInfoObjectRedis(getToken(BG_TOKEN), User.class);
}
public String fmtObj(Object obj) throws IOException {
return obj instanceof String ? obj.toString():JsonUtil.bean2Json(obj);
}
/**
* 添加到redis
* @param token
* Key
* @param obj
* Value
* @param timeout
* 过期时间
* @param unit
* TimeUnitEnum 时间格式
* @throws IOException
*/
public void set(String token, Object obj, long timeout,TimeUnit unit) throws IOException {
stringRedisTemplate.opsForValue().set(token,fmtObj(obj),timeout,unit);
}
public void set(String token, Object obj, long timeout) throws IOException {
stringRedisTemplate.opsForValue().set(token,fmtObj(obj),timeout,TimeUnit.SECONDS);
}
/**
* 添加到redis
* @param token Key
* @param obj Value
* @throws IOException
*/
public void set(String token,Object obj) throws IOException{
stringRedisTemplate.opsForValue().set(token,fmtObj(obj));
}
/**
* 根据key删除redis中的数据
* @param key
* @throws IOException
*/
public void delete(String key) throws IOException{
stringRedisTemplate.delete(key);
}
/**
* 根据key查询redis中的数据
*
* @param token
* @return
*/
public String get(String token) {
return stringRedisTemplate.opsForValue().get(token);
}
public <T> T getInfoObjectRedis(String key,Class<T> objClass){
try {
String userInfo = get(key);
if(StringUtils.isEmpty(userInfo)) {
throw new BaseException(ResponseCodeEnum.NO_LOGIN);
}
return JsonUtil.json2Bean(userInfo, objClass);
} catch (Exception e) {
throw new BaseException("获取用户信息错误!"+e.getMessage());
}
}
public static String getToken(String tokenName){
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
String token = null;
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
//TODO--前台获取token
if(key.toLowerCase().equals(tokenName)){
token=request.getHeader(key);
}
}
if (token == null) {
throw new BaseException(ResponseCodeEnum.NO_LOGIN);
}
return token;
}
public static String getBgToken(){
return getToken(BG_TOKEN);
}
public static String getFgToken(){
return getToken(FG_TOKEN);
}
}
package com.zrqx.statistics.commons.config;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 访问地址
* http://ip:port/swagger-ui.html
最常用的5个注解
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
其它若干
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiClass
@ApiError
@ApiErrors
@ApiParamImplicit
@ApiParamsImplicit
*/
@EnableSwagger2
@Configuration
public class Swagger2Config {
@Bean
public Docket createRestApi() {
//添加head参数start
ParameterBuilder tokenPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
tokenPar.name("y-token").description("y令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
tokenPar.name("x-token").description("x令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
//添加head参数end
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//为当前包路径
.apis(RequestHandlerSelectors.basePackage("com.zrqx"))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars);
}
//构建 api文档的详细信息函数
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("sysUser 测试使用 Swagger2 构建RESTful API")
//描述
.description("sysUser服务 API 描述")
//创建人
.contact(new Contact("陈新昌", "www.baidu.com", "cxinchang@126.com"))
//版本号
.version("3.0")
.build();
}
}
\ No newline at end of file
package com.zrqx.statistics.commons.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.zrqx.core.constant.sysuser.SysUserRequestPath;
import com.zrqx.statistics.commons.interceptor.InterceptorConfig;
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
/**
* 跨域支持
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*").allowedMethods("*").allowCredentials(false).maxAge(3600);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册自定义拦截器,添加拦截路径和排除拦截路径
registry.addInterceptor(new InterceptorConfig()).addPathPatterns(SysUserRequestPath.BG + "/**")
.excludePathPatterns(SysUserRequestPath.BG+SysUserRequestPath.PERMISSIONS+SysUserRequestPath.LOGIN);
}
}
\ No newline at end of file
package com.zrqx.statistics.commons.interceptor;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.util.CallBack;
/**
*controller 异常处理
* @ClassName: CustomExceptionHandler
* @Description: TODO(这里用一句话描述这个类的作用)
* @author 杨振广
* @date 2016-7-14 上午9:45:40
*
*/
@ControllerAdvice
public class CustomExceptionHandler {
private static Logger logger = Logger.getLogger(CustomExceptionHandler.class);
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object handlerException(HttpServletRequest request,HttpServletResponse response,Exception e){
e.printStackTrace();
StackTraceElement[] s = e.getStackTrace();
StringBuffer stes = new StringBuffer(s.length*2);
for (StackTraceElement stackTraceElement : s) {
stes.append(stackTraceElement.toString());
stes.append("<br/>");
}
String info = "异常时间:"+new Date().toLocaleString()+"\n请求地址:"+request.getRequestURI()+"\n参数:"+request.getQueryString()+"\n"+e.getMessage();
logger.error(info+"\n"+stes.toString());
request.setAttribute("error",info);
request.setAttribute("errorInfo",e.getStackTrace());
return CallBack.exception(e.getMessage());
}
/**
* 参数验证异常处理
* @Title: handlerException
* @Description:
* @param request
* @param response
* @param e BindException
* @return
* @author lpf
* @date: 2018年5月9日 下午5:01:58
*/
@ExceptionHandler(BindException.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object handlerException(HttpServletRequest request,HttpServletResponse response,BindException e) {
List<ObjectError> errors = e.getAllErrors();
StringBuffer msg = new StringBuffer();
for (ObjectError objectError : errors) {
msg.append(objectError.getDefaultMessage());
msg.append(",");
}
msg.deleteCharAt(msg.length()-1);
return CallBack.validate(msg.toString());
}
/**
* 执行异常处理
* @Description:
* @param e BaseException
* @return
* @date: 2018年5月9日 下午5:01:58
*
*/
@ExceptionHandler(BaseException.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object myException(BaseException e) {
return CallBack.exception(e.getCode(),null,e.getMessage());
}
}
\ No newline at end of file
package com.zrqx.statistics.commons.interceptor;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* Feign配置
* 使用FeignClient进行服务间调用,传递headers信息
* @author lw
* @date 2018年10月17日下午2:48:44
*/
@Component
@Configuration
public class FeignHeaderInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
// 前台token
if(request.getHeader("Y-Token") != null){
requestTemplate.header("Y-Token", request.getHeader("Y-Token"));
}
// 后台token
if(request.getHeader("X-Token") != null){
requestTemplate.header("X-Token", request.getHeader("X-Token"));
}
}
}
}
package com.zrqx.statistics.commons.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class InterceptorConfig implements HandlerInterceptor{
private static final Logger log = LoggerFactory.getLogger(InterceptorConfig.class);
/**
* 进入controller层之前拦截请求
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
HttpSession session = httpServletRequest.getSession();
if(session.getAttribute("user") != null){
return true;
}
else{
// PrintWriter printWriter = httpServletResponse.getWriter();
// printWriter.write(JsonUtil.bean2Json(CallBack.create(ResponseCodeEnum.NO_LOGIN)));
// return false;
return true;
}
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
log.info("--------------处理请求完成后视图渲染之前的处理操作---------------");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
log.info("---------------视图渲染之后的操作--------------------------");
}
}
\ No newline at end of file
package com.zrqx.statistics.commons.interceptor;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.zrqx.core.model.sysuser.log.Log;
import com.zrqx.core.model.sysuser.user.User;
import com.zrqx.core.util.LogUtils;
import com.zrqx.statistics.bg.client.sysuser.SysuserClient;
import com.zrqx.statistics.commons.Redis;
import com.zrqx.statistics.commons.util.SysuserUtil;
import io.swagger.annotations.ApiOperation;
@Aspect
@Component
public class LogAspect {
@Autowired
private SysuserClient logService;
@Autowired
private Redis redis;
// 环绕通知,环绕增强,相当于MethodInterceptor
@Around(value = "execution(* com.zrqx.statistics.bg.controller..*(..)) and @annotation(annotation) and @annotation(org.springframework.web.bind.annotation.PostMapping)", argNames="annotation")
public Object arround(ProceedingJoinPoint pjp, ApiOperation annotation) throws Throwable {
User user = redis.getUser();
Log log = LogUtils.getLog(pjp, annotation, this.getClass(), redis.getUser().getUserName(), redis.getUser().getIp());
logService.saveLog(log);
return log.getResult();
}
}
\ No newline at end of file
package com.zrqx.statistics.commons.interceptor;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource;
import org.springframework.transaction.interceptor.RollbackRuleAttribute;
import org.springframework.transaction.interceptor.RuleBasedTransactionAttribute;
import org.springframework.transaction.interceptor.TransactionAttribute;
import org.springframework.transaction.interceptor.TransactionInterceptor;
/**
* Created by guozp on 2017/8/28.
*/
@Aspect
//@Component 事务依然生效
@Configuration
public class TxAdviceInterceptor {
private static final int TX_METHOD_TIMEOUT = 1000;
private static final String AOP_POINTCUT_EXPRESSION = "execution(* com.zrqx..service..*Impl.*(..))";
@Autowired
private PlatformTransactionManager transactionManager;
// 其中 dataSource 框架会自动为我们注入
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
public TransactionInterceptor txAdvice() {
NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();
/*只读事务,不做更新操作*/
RuleBasedTransactionAttribute readOnlyTx = new RuleBasedTransactionAttribute();
readOnlyTx.setReadOnly(true);
readOnlyTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED );
/*当前存在事务就使用当前事务,当前不存在事务就创建一个新的事务*/
RuleBasedTransactionAttribute requiredTx = new RuleBasedTransactionAttribute();
requiredTx.setRollbackRules(
Collections.singletonList(new RollbackRuleAttribute(Exception.class)));
requiredTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
requiredTx.setTimeout(TX_METHOD_TIMEOUT);
Map<String, TransactionAttribute> txMap = new HashMap<>();
txMap.put("add*", requiredTx);
txMap.put("save*", requiredTx);
txMap.put("insert*", requiredTx);
txMap.put("update*", requiredTx);
txMap.put("delete*", requiredTx);
txMap.put("get*", readOnlyTx);
txMap.put("query*", readOnlyTx);
source.setNameMap( txMap );
TransactionInterceptor txAdvice = new TransactionInterceptor(transactionManager, source);
return txAdvice;
}
@Bean
public Advisor txAdviceAdvisor() {
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
return new DefaultPointcutAdvisor(pointcut, txAdvice());
//return new DefaultPointcutAdvisor(pointcut, txAdvice);
}
}
\ No newline at end of file
package com.zrqx.statistics.commons.util;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.springframework.beans.BeanUtils;
import com.zrqx.core.exception.BaseException;
public class Copy {
/**
* 批量复制对象
*
* @param list
* @param clazz
* @return
*/
public static <VO, R> List<VO> copyList(List<R> list, Class<VO> clazz) {
return list.stream().map(obj -> {
VO vo = null;
try {
vo = clazz.newInstance();
BeanUtils.copyProperties(obj, vo);
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
throw new BaseException("批量复制对象时创建对象失败。");
}
return vo;
}).collect(Collectors.toList());
}
/**
* 过滤批量复制对象
*
* @param list
* @param clazz
* @param filter
* @return
*/
public static <VO, R> List<VO> copyList(List<R> list, Class<VO> clazz, Predicate<R> filter) {
return list.stream().filter(filter).map(obj -> {
VO vo = null;
try {
vo = clazz.newInstance();
BeanUtils.copyProperties(obj, vo);
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
throw new BaseException("批量复制对象时创建对象失败。");
}
return vo;
}).collect(Collectors.toList());
}
}
package com.zrqx.statistics.commons.util;
import lombok.Data;
@Data
public class ExportEntity {
private String field1;
private String field2;
private String field3;
private String field4;
private String field5;
private String field6;
private String field7;
private String field8;
private String field9;
private String field10;
private String field11;
private String field12;
private String field13;
private String field14;
private String field15;
private String field16;
private String field17;
private String field18;
private String field19;
private String field20;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论