From a076131a7e8f71a8adc446e96b31f3333508b889 Mon Sep 17 00:00:00 2001 From: chenweiwei Date: Fri, 22 Dec 2023 15:46:20 +0800 Subject: [PATCH] 初始化提交 --- pom.xml | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/MongoModelApplication.java | 16 ++++++++++++++++ src/main/java/com/songshu/mongo/controller/StaticScheduleTaskController.java | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/model/dto/Accounts.java | 30 ++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/model/dto/AuditRecords.java | 10 ++++++++++ src/main/java/com/songshu/mongo/model/dto/BookDTO.java | 34 ++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/model/dto/Buildings.java | 41 +++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/model/dto/ContractReceipts.java | 38 ++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/model/dto/Contracts.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/model/dto/Room.java | 30 ++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/model/json/JsonString.java | 41 +++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/service/BookMongoService.java | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/service/StaticScheduleTaskService.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/service/UpdateTingcheService.java | 27 +++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/service/impl/BookMongoServiceImpl.java | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/service/impl/StaticScheduleTaskServiceImpl.java | 548 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/service/impl/UpdateTingcheServiceImpl.java | 425 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/test/BookMongoControllerTest.java | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/tools/JDBCUtil.java | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/tools/JDBCUtilMysql.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/songshu/mongo/tools/MapFactory.java | 28 ++++++++++++++++++++++++++++ src/main/resources/application.properties | 12 ++++++++++++ 22 files changed, 2375 insertions(+), 0 deletions(-) create mode 100644 pom.xml create mode 100644 src/main/java/com/songshu/mongo/MongoModelApplication.java create mode 100644 src/main/java/com/songshu/mongo/controller/StaticScheduleTaskController.java create mode 100644 src/main/java/com/songshu/mongo/model/dto/Accounts.java create mode 100644 src/main/java/com/songshu/mongo/model/dto/AuditRecords.java create mode 100644 src/main/java/com/songshu/mongo/model/dto/BookDTO.java create mode 100644 src/main/java/com/songshu/mongo/model/dto/Buildings.java create mode 100644 src/main/java/com/songshu/mongo/model/dto/ContractReceipts.java create mode 100644 src/main/java/com/songshu/mongo/model/dto/Contracts.java create mode 100644 src/main/java/com/songshu/mongo/model/dto/Room.java create mode 100644 src/main/java/com/songshu/mongo/model/json/JsonString.java create mode 100644 src/main/java/com/songshu/mongo/service/BookMongoService.java create mode 100644 src/main/java/com/songshu/mongo/service/StaticScheduleTaskService.java create mode 100644 src/main/java/com/songshu/mongo/service/UpdateTingcheService.java create mode 100644 src/main/java/com/songshu/mongo/service/impl/BookMongoServiceImpl.java create mode 100644 src/main/java/com/songshu/mongo/service/impl/StaticScheduleTaskServiceImpl.java create mode 100644 src/main/java/com/songshu/mongo/service/impl/UpdateTingcheServiceImpl.java create mode 100644 src/main/java/com/songshu/mongo/test/BookMongoControllerTest.java create mode 100644 src/main/java/com/songshu/mongo/tools/JDBCUtil.java create mode 100644 src/main/java/com/songshu/mongo/tools/JDBCUtilMysql.java create mode 100644 src/main/java/com/songshu/mongo/tools/MapFactory.java create mode 100644 src/main/resources/application.properties diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c456c1f --- /dev/null +++ b/pom.xml @@ -0,0 +1,158 @@ + + + 4.0.0 + + com.songshu.mongo + mongo-model + 0.0.1-SNAPSHOT + jar + + mongo-model + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.3.RELEASE + + + + + UTF-8 + UTF-8 + 2.8.8 + 1.8 + + + + + + com.alibaba + fastjson + 1.2.31 + + + com.mangofactory + swagger-springmvc + 1.0.2 + + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + + + org.mongodb + mongodb-driver + 3.4.2 + + + + commons-lang + commons-lang + 2.6 + + + + + com.alibaba + fastjson + 1.2.51 + + + + + + org.projectlombok + lombok + 1.16.16 + + + + com.fasterxml.jackson.core + jackson-annotations + ${version.jackson} + + + com.fasterxml.jackson.core + jackson-databind + ${version.jackson} + + + com.fasterxml.jackson.core + jackson-core + ${version.jackson} + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.restdocs + spring-restdocs-mockmvc + test + + + org.springframework.boot + spring-boot-test + + + org.junit.jupiter + junit-jupiter + RELEASE + compile + + + org.junit.jupiter + junit-jupiter + RELEASE + compile + + + junit + junit + + + org.springframework + spring-test + + + org.springframework + spring-test + + + + + + + + + + mysql + mysql-connector-java + 5.1.29 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/src/main/java/com/songshu/mongo/MongoModelApplication.java b/src/main/java/com/songshu/mongo/MongoModelApplication.java new file mode 100644 index 0000000..5947f5e --- /dev/null +++ b/src/main/java/com/songshu/mongo/MongoModelApplication.java @@ -0,0 +1,16 @@ +package com.songshu.mongo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; + + +@SpringBootApplication +@ComponentScan(basePackages = "com.songshu.mongo.*") +public class MongoModelApplication { + + public static void main(String[] args) { + SpringApplication.run(MongoModelApplication.class, args); + } +} diff --git a/src/main/java/com/songshu/mongo/controller/StaticScheduleTaskController.java b/src/main/java/com/songshu/mongo/controller/StaticScheduleTaskController.java new file mode 100644 index 0000000..2b44a1e --- /dev/null +++ b/src/main/java/com/songshu/mongo/controller/StaticScheduleTaskController.java @@ -0,0 +1,82 @@ +package com.songshu.mongo.controller; + + +import com.songshu.mongo.service.StaticScheduleTaskService; +import com.songshu.mongo.service.UpdateTingcheService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; + +import java.time.LocalDateTime; + +/** + * cw + * 定时任务 + */ +@Configuration +@EnableScheduling +@Slf4j +public class StaticScheduleTaskController { + @Autowired + private StaticScheduleTaskService staticScheduleTaskService; + + @Autowired + private UpdateTingcheService updateTingcheService; + +// /** +// * @Scheduled-cron : 指定定时任务的执行时间 +// * 或直接指定时间间隔,例如:5秒 +// * @Scheduled(fixedRate=5000) 案例-案例 +// */ +// @Scheduled(cron = "0/5 * * * * ?") +// private void configureTask() { +// log.info("执行静态定时任务时间: {}", LocalDateTime.now()); +// } + +// 每隔5秒执行一次:*/5 * * * * ? +// 每隔1分钟执行一次:0 */1 * * * ? +// 每天23点执行一次:0 0 23 * * ? +// 每天凌晨1点执行一次:0 0 1 * * ? +// 每月1号凌晨1点执行一次:0 0 1 1 * ? +// 每月最后一天23点执行一次:0 0 23 L * ? +// 每周星期天凌晨1点实行一次:0 0 1 ? * L +// 在26分、29分、33分执行一次:0 26,29,33 * * * ? +// 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ? + + /** + * 租赁合同 + */ + @Scheduled(cron = "0 0 1 * * ?") + private void ScheduledTask() { + //room 表 + staticScheduleTaskService.SynchronousDataRoom(); + //buildings 楼宇表 + staticScheduleTaskService.SynchronousDataRuildings(); + //客户合同 + staticScheduleTaskService.SynchronousDataContracts(); + //客户合同-房间 + staticScheduleTaskService.SynchronousDataContractsRoom(); + //客户 + staticScheduleTaskService.SynchronousDataAccounts(); + //合同收款表 + staticScheduleTaskService.SynchronousDataContractReceipts(); + } + + + /*** + * 停车 + */ + @Scheduled(cron = "0 */5 * * * ?") + private void ScheduledTask2() { + updateTingcheService.updateTjTcsjtjn(); + updateTingcheService.updateTjCljrsctjn(); + updateTingcheService.updateTjCljrsctjy(); + updateTingcheService.updateTjCljrsctjr(); + updateTingcheService.updateTjParkingPayment(); + updateTingcheService.updateTjVehicleRecords(); + } + + +} diff --git a/src/main/java/com/songshu/mongo/model/dto/Accounts.java b/src/main/java/com/songshu/mongo/model/dto/Accounts.java new file mode 100644 index 0000000..e21e202 --- /dev/null +++ b/src/main/java/com/songshu/mongo/model/dto/Accounts.java @@ -0,0 +1,30 @@ +package com.songshu.mongo.model.dto; + +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +@Data +@Document(collection = "accounts") +public class Accounts { + private String _id; + private String name; + private String tax_number; + private Date in_time; + private String in_or_out; + private String invoice_type; + private String regis_amount; + private String financing_amount; + private String space; + private String owner; + private Date created; + private Date modified; + private String created_by; + private String modified_by; + private String company_id; + private Date regis_time; + private String regis_location; + private String Legal_person; + private Date out_time; +} diff --git a/src/main/java/com/songshu/mongo/model/dto/AuditRecords.java b/src/main/java/com/songshu/mongo/model/dto/AuditRecords.java new file mode 100644 index 0000000..707150f --- /dev/null +++ b/src/main/java/com/songshu/mongo/model/dto/AuditRecords.java @@ -0,0 +1,10 @@ +package com.songshu.mongo.model.dto; + +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; + +@Data +@Document(collection = "audit_records") +public class AuditRecords { + private String _id; +} diff --git a/src/main/java/com/songshu/mongo/model/dto/BookDTO.java b/src/main/java/com/songshu/mongo/model/dto/BookDTO.java new file mode 100644 index 0000000..e9fd55f --- /dev/null +++ b/src/main/java/com/songshu/mongo/model/dto/BookDTO.java @@ -0,0 +1,34 @@ +package com.songshu.mongo.model.dto; + +import com.wordnik.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; + +/** + * 案例表demo1 + */ +//@Document如果数据库中使用的表名与实体类不同名必须增加Document注解,一致可省略。 +@Data +@Document(collection = "demo1") +public class BookDTO implements Serializable { + + //id属性是给mongodb用的,用@Id注解修饰 + @Id + private String id; + + // 书名 + private String name; + + // 价格 + private String price; + + // 类型 + private String type; + + // 阅读量 + private Double readedNum; + +} diff --git a/src/main/java/com/songshu/mongo/model/dto/Buildings.java b/src/main/java/com/songshu/mongo/model/dto/Buildings.java new file mode 100644 index 0000000..467a8a3 --- /dev/null +++ b/src/main/java/com/songshu/mongo/model/dto/Buildings.java @@ -0,0 +1,41 @@ +package com.songshu.mongo.model.dto; + +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +@Data +@Document(collection = "buildings") +public class Buildings { + private String _id; + private String name; + private String place; + private String register_name1; + private String area1; + private String area2; + private String area3; + private String area4; + private String area6; + private String rentalarea; + private String selfusearea; + private String struture; + private String elevatorNO; + private String actime; + private String space; + private String owner; + private Date created; + private Date modified; + private String created_by; + private String modified_by; + private String company_id; + private String area5; + private String area7; + private String electedload; + private String loadbearing; + private String moreinfo; + private String hight; + private String register_name2; + //园区 + private String Park_Location; +} diff --git a/src/main/java/com/songshu/mongo/model/dto/ContractReceipts.java b/src/main/java/com/songshu/mongo/model/dto/ContractReceipts.java new file mode 100644 index 0000000..032d913 --- /dev/null +++ b/src/main/java/com/songshu/mongo/model/dto/ContractReceipts.java @@ -0,0 +1,38 @@ +package com.songshu.mongo.model.dto; + + +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +/** + * 合同收款 + */ +@Data +@Document(collection = "contract_receipts") +public class ContractReceipts { + private String _id; + private String fees_type; + private String account; + private String contract; + private Date contract_start_date; + private Date contract_end_date; + private Date fee_period_start; + private Date fee_period_end; + private String receipts_contractor; + private String building; + private String amount; + private String paid_amount; + private String space; + private String owner; + private Date created; + private Date modified; + private String name; + private String unpaid_amount; + private String modified_by; + private Date paid_date; + private Date paid_real_date; + private String fees_finished; + private String searchFunc; +} diff --git a/src/main/java/com/songshu/mongo/model/dto/Contracts.java b/src/main/java/com/songshu/mongo/model/dto/Contracts.java new file mode 100644 index 0000000..58ea81d --- /dev/null +++ b/src/main/java/com/songshu/mongo/model/dto/Contracts.java @@ -0,0 +1,49 @@ +package com.songshu.mongo.model.dto; + +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; +import java.util.List; + +@Data +@Document(collection = "contracts") +public class Contracts { + private String _id; + private String contractNO; + private String clientname; + private String contractor; + private String building_select; + private Date start_date; + private Date end_date; + private String bop4; + private String free_period_fees; + private String free_period_fees_amount; + private String contract_type1; + private String rentalamount; + private String serviceamount; + private String depositcycle; + private String paymentcycle; + private String bop3; + private String remark; + private Date signed_date; + private String meetingstate; + private String contract_fulfillment_state; + private String space; + private String owner; + private Date created; + private Date modified; + private String created_by; + private String modified_by; + private String company_id; + private String rentalsquare; + private String name; + private String contract_type2; + private Date free_period_start; + private Date free_period_end; + private Date contract_end_time; + private String remark2; + private String remark3; + private String subject; + private List room_number; +} diff --git a/src/main/java/com/songshu/mongo/model/dto/Room.java b/src/main/java/com/songshu/mongo/model/dto/Room.java new file mode 100644 index 0000000..0eb80d2 --- /dev/null +++ b/src/main/java/com/songshu/mongo/model/dto/Room.java @@ -0,0 +1,30 @@ +package com.songshu.mongo.model.dto; + +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +@Data +@Document(collection = "room") +public class Room implements Serializable { + private String _id; + //面积 + private String area; + //所属楼宇 + private String building; + private List company_ids; + private Date created; + private Date modified; + //房间号 + private String name; + private String owner; + //是否空置 + private String rentalstatus; + private String space; + //楼层 + private String roomlevel; +} + diff --git a/src/main/java/com/songshu/mongo/model/json/JsonString.java b/src/main/java/com/songshu/mongo/model/json/JsonString.java new file mode 100644 index 0000000..ced0726 --- /dev/null +++ b/src/main/java/com/songshu/mongo/model/json/JsonString.java @@ -0,0 +1,41 @@ +package com.songshu.mongo.model.json; + +/** + * 案例json + */ +public class JsonString { + + // 方便mongo做批量新增得示例json数据 + public static final String jsonString ="[{\n" + + " \"id\": \"1\",\n" + + " \"name\": \"盗墓笔记\",\n" + + " \"price\": \"39.6\",\n" + + " \"type\": \"盗墓探险\",\n" + + " \"readedNum\": 16.1\n" + + " }, {\n" + + " \"id\": \"2\",\n" + + " \"name\": \"武神主宰\",\n" + + " \"price\": \"19.9\",\n" + + " \"type\": \"仙侠\",\n" + + " \"readedNum\": 13.2\n" + + " }, {\n" + + " \"id\": \"3\",\n" + + " \"name\": \"笔仙外藩\",\n" + + " \"price\": \"19.9\",\n" + + " \"type\": \"惊悚\",\n" + + " \"readedNum\": 7.6\n" + + " }, {\n" + + " \"id\": \"4\",\n" + + " \"name\": \"千与千寻\",\n" + + " \"price\": \"26.3\",\n" + + " \"type\": \"日漫爱情\",\n" + + " \"readedNum\": 31.5\n" + + " }, {\n" + + " \"id\": \"5\",\n" + + " \"name\": \"万界圣主\",\n" + + " \"price\": \"17.8\",\n" + + " \"type\": \"仙侠\",\n" + + " \"readedNum\": 10.7\n" + + " }\n" + + "]\n"; +} diff --git a/src/main/java/com/songshu/mongo/service/BookMongoService.java b/src/main/java/com/songshu/mongo/service/BookMongoService.java new file mode 100644 index 0000000..3c8bd0f --- /dev/null +++ b/src/main/java/com/songshu/mongo/service/BookMongoService.java @@ -0,0 +1,77 @@ +package com.songshu.mongo.service; + +import com.songshu.mongo.model.dto.BookDTO; +import com.songshu.mongo.model.dto.Room; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import java.util.List; + +/** + * cw + * 案例 + */ +public interface BookMongoService { + + /** + * 新增 + * @param bookDTO + * @return + */ + Boolean inserBookInfo(BookDTO bookDTO); + + /** + * 批量新增 + * @param bookDTOList + */ + Boolean inserBatchBookInfo(List bookDTOList); + + /** + * 修改 + * @param query + * @param update + * @return + */ + Boolean updateBookInfo(Query query, Update update); + + /** + * 查所有 + * @return + */ + List findAllBookInfo(); + + /** + * 根据书名查询:精准 + * @param name + * @return + */ + List findBookInfoByName(String name); + + /** + * 根据书名查询:模糊 + * @param name + * @return + */ + List findBookInfoReName(String name); + + + /** + * 根据阅读量:范围查 + * @return + */ + List findBookInfoReRange(Double minReadedNum, Double maxReadedNum); + + /** + * 分页-排序查询 + * @param minReadedNum + * @param maxReadedNum + * @param pageNum + * @param pageSize + * @return + */ + List findBookInfoPage(Double minReadedNum, Double maxReadedNum, Integer pageNum, Integer pageSize); + + List findAllBookInfo3(); + + + +} diff --git a/src/main/java/com/songshu/mongo/service/StaticScheduleTaskService.java b/src/main/java/com/songshu/mongo/service/StaticScheduleTaskService.java new file mode 100644 index 0000000..5a5c1f6 --- /dev/null +++ b/src/main/java/com/songshu/mongo/service/StaticScheduleTaskService.java @@ -0,0 +1,44 @@ +package com.songshu.mongo.service; + +public interface StaticScheduleTaskService { + + /** + * 房间 + */ + void SynchronousDataRoom(); + + /** + * 楼宇 + */ + void SynchronousDataRuildings(); + + /** + * 客户合同 + */ + void SynchronousDataContracts(); + + /** + * 合同房间 + */ + void SynchronousDataContractsRoom(); + + + /** + * 客户 + */ + void SynchronousDataAccounts(); + + + /** + * 合同收款表 + */ + void SynchronousDataContractReceipts(); + + + /** + * 测试 + */ + void SynchronousDataContractAuditRecords(); + + +} diff --git a/src/main/java/com/songshu/mongo/service/UpdateTingcheService.java b/src/main/java/com/songshu/mongo/service/UpdateTingcheService.java new file mode 100644 index 0000000..68149e0 --- /dev/null +++ b/src/main/java/com/songshu/mongo/service/UpdateTingcheService.java @@ -0,0 +1,27 @@ +package com.songshu.mongo.service; + +public interface UpdateTingcheService { + + + void updateTjTcsjtjn(); + + + void updateTjCljrsctjn(); + + + void updateTjCljrsctjy(); + + + void updateTjCljrsctjr(); + + + void updateTjJrcrktcsj(); + + + void updateTjParkingPayment(); + + + void updateTjVehicleRecords(); + + +} diff --git a/src/main/java/com/songshu/mongo/service/impl/BookMongoServiceImpl.java b/src/main/java/com/songshu/mongo/service/impl/BookMongoServiceImpl.java new file mode 100644 index 0000000..9c9e4b9 --- /dev/null +++ b/src/main/java/com/songshu/mongo/service/impl/BookMongoServiceImpl.java @@ -0,0 +1,179 @@ +package com.songshu.mongo.service.impl; + +import com.songshu.mongo.model.dto.BookDTO; +import com.songshu.mongo.model.dto.Room; +import com.songshu.mongo.service.BookMongoService; +import com.songshu.mongo.tools.JDBCUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.stereotype.Service; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.Statement; +import java.sql.Timestamp; +import java.util.List; +import java.util.regex.Pattern; + +/** + * cw + * 案例 + */ +@Service +public class BookMongoServiceImpl implements BookMongoService { + + @Autowired + private MongoTemplate mongoTemplate; + + /** + * 新增 + * @param bookDTO + * @return + */ + @Override + public Boolean inserBookInfo(BookDTO bookDTO) { + mongoTemplate.insert(bookDTO); + return true; + } + + /** + * 批量新增 + * @param bookDTOList + * @return + */ + @Override + public Boolean inserBatchBookInfo(List bookDTOList) { + mongoTemplate.insert(bookDTOList,BookDTO.class); + return true; + } + + /** + * 修改 + * @param query + * @param update + * @return + */ + @Override + public Boolean updateBookInfo(Query query, Update update) { + mongoTemplate.updateMulti(query,update,BookDTO.class); + return true; + } + + /** + * 查所有 + * @return + */ + @Override + public List findAllBookInfo() { + List bookDTOList = mongoTemplate.findAll(BookDTO.class); + return bookDTOList; + } + + /** + * 根据书名查询: 精准 + * @param name + * @return + */ + @Override + public List findBookInfoByName(String name) { + Query query = Query.query(Criteria.where("name").is(name)); + return mongoTemplate.find(query,BookDTO.class); + } + + /** + * 根据书名查询: 模糊 + * @param name + * @return + */ + @Override + public List findBookInfoReName(String name) { + // ^.*表示字符前面、*$表示字符后面 + Pattern compile = Pattern.compile("^.*" + name + ".*$", Pattern.CASE_INSENSITIVE); + Query query= Query.query(Criteria.where("name").regex(compile)); + return mongoTemplate.find(query,BookDTO.class); + } + + /** + * 根据阅读量:范围查询并排序 + * @param minReadedNum + * @param maxReadedNum + * @return + */ + @Override + public List findBookInfoReRange(Double minReadedNum, Double maxReadedNum) { + // query两种方式 + Query query = Query.query(Criteria.where("readedNum").gte(minReadedNum).lte(maxReadedNum)) + .with(new Sort(new Sort.Order(Sort.Direction.ASC,"readedNum"))); + return mongoTemplate.find(query,BookDTO.class); + } + + /** + * 排序-分页查询 + * @param minReadedNum + * @param maxReadedNum + * @param pageNum + * @param pageSize + * @return + */ + @Override + public List findBookInfoPage(Double minReadedNum, Double maxReadedNum, Integer pageNum, Integer pageSize) { + Query query = Query.query(Criteria.where("readedNum").gte(minReadedNum).lte(maxReadedNum)) + .with(new Sort(new Sort.Order(Sort.Direction.ASC,"readedNum"))) + .with(new PageRequest(pageNum-1,pageSize)); + return mongoTemplate.find(query, BookDTO.class); + } + + @Override + public List findAllBookInfo3() { + List all = mongoTemplate.findAll(Room.class); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtil.getConnection(); + Statement stat = JDBCUtil.getStatement(); + JDBCUtil.executeUpdate("DELETE FROM room_company_ids"); + JDBCUtil.executeUpdate("DELETE FROM room"); + String sql = "insert into room(id, _id, building, name, area, rentalstatus, space, owner, created, modified, created_by, modified_by, company_id) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + int size = all.size(); + int group = 500; + for (int i = 1; i < size; i++) { + Room room = all.get(i); + ps.setObject(1, i); + ps.setObject(2,room.get_id() ); + ps.setObject(3, room.getBuilding()); + ps.setObject(4, room.getName()); + ps.setObject(5, room.getArea()); + ps.setObject(6, room.getRentalstatus()); + ps.setObject(7, room.getSpace()); + ps.setObject(8, room.getOwner()); + ps.setTimestamp(9, new Timestamp(room.getCreated().getTime())); + ps.setTimestamp(10, new Timestamp(room.getModified().getTime())); + ps.setObject(11, null); + ps.setObject(12, null); + ps.setObject(13, null); + ps.addBatch(); // 将sql语句打包到一个容器中 + if (i % group == 0 || i == size-1) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + e.printStackTrace(); + } finally { + JDBCUtil.getClose(); + } + return all; + } + +} diff --git a/src/main/java/com/songshu/mongo/service/impl/StaticScheduleTaskServiceImpl.java b/src/main/java/com/songshu/mongo/service/impl/StaticScheduleTaskServiceImpl.java new file mode 100644 index 0000000..0979037 --- /dev/null +++ b/src/main/java/com/songshu/mongo/service/impl/StaticScheduleTaskServiceImpl.java @@ -0,0 +1,548 @@ +package com.songshu.mongo.service.impl; + +import com.songshu.mongo.model.dto.*; +import com.songshu.mongo.service.StaticScheduleTaskService; +import com.songshu.mongo.tools.JDBCUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Service; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.Statement; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Slf4j +@Service +public class StaticScheduleTaskServiceImpl implements StaticScheduleTaskService { + @Autowired + private MongoTemplate mongoTemplate; + //每次读取mongo条数 + final int pageSize = 10000; + //批量处理条数 + final int group = 500; + + /** + * 房间 + */ + @Override + public void SynchronousDataRoom() { + log.info("房间表同步开始"); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtil.getConnection(); + Statement stat = JDBCUtil.getStatement(); + JDBCUtil.executeUpdate("DELETE FROM room"); + String sql = "insert into room(_id, building, name, area, rentalstatus, space, owner, created, modified, created_by, modified_by, company_id,roomlevel) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + Query query = new Query(); + long count = mongoTemplate.count(query, Room.class); + if (count == 0) { + return; + } + //每页条数 + int ceil = (int) Math.ceil((double) count / (double) pageSize); + for (int currPage = 0; currPage < ceil; currPage++) { + List all = mongoTemplate.find(query.with(new PageRequest(currPage, pageSize)), Room.class); + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Room room = all.get(i - 1); + ps.setObject(1, room.get_id()); + ps.setObject(2, room.getBuilding()); + ps.setObject(3, room.getName()); + ps.setObject(4, room.getArea()); + ps.setObject(5, room.getRentalstatus()); + ps.setObject(6, room.getSpace()); + ps.setObject(7, room.getOwner()); + ps.setTimestamp(8, new Timestamp(room.getCreated().getTime())); + ps.setTimestamp(9, new Timestamp(room.getModified().getTime())); + ps.setObject(10, null); + ps.setObject(11, null); + ps.setObject(12, null); + ps.setObject(13, room.getRoomlevel()); + ps.addBatch(); + if (i % group == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("房间表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("房间表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtil.getClose(); + } + } + + /** + * 楼宇 + */ + @Override + public void SynchronousDataRuildings() { + long start = System.currentTimeMillis(); + log.info("楼宇表同步开始"); + try { + Connection conn = JDBCUtil.getConnection(); + Statement stat = JDBCUtil.getStatement(); + JDBCUtil.executeUpdate("DELETE FROM buildings"); + String sql = "insert into buildings(_id, name, place, register_name1, " + + "area1, area2, area3, area4, area6, " + + "rentalarea, selfusearea, struture, elevatorNO, actime, " + + "space, owner, created, modified, created_by, " + + "modified_by, company_id, area5, area7, electedload, " + + "loadbearing, moreinfo, hight, register_name2,park_location) " + + "VALUES (?, ?, ?, ?," + + " ?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?)"; + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + List ids=new ArrayList(); + ids.add("2qBN4NFQvCj6zZ35F"); + ids.add("AcmtYXCgPaDqp8KpW"); + ids.add("avKzpXyChidbiJrjo"); + ids.add("FxpPfADw96WfTJwNS"); + ids.add("LciHX7z2fRP4BdyKE"); + ids.add("mg3MHrd9TZozvjmck"); + ids.add("XupuevAF2CTwnd4mf"); + ids.add("yBTHZ9jcNcr3E68NJ"); + ids.add("zz4CCvCErxMaW9kga"); + Query query = new Query(Criteria.where("_id").in(ids)); + long count = mongoTemplate.count(query, Buildings.class); + if (count == 0) { + return; + } + //每页条数 + int ceil = (int) Math.ceil((double) count / (double) pageSize); + for (int currPage = 0; currPage < ceil; currPage++) { + List all = mongoTemplate.find(query.with(new PageRequest(currPage, pageSize)), Buildings.class); + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Buildings data = all.get(i - 1); + ps.setObject(1, data.get_id()); + ps.setObject(2, data.getName()); + ps.setObject(3, data.getPlace()); + ps.setObject(4, data.getRegister_name1()); + + ps.setObject(5, data.getArea1()); + ps.setObject(6, data.getArea2()); + ps.setObject(7, data.getArea3()); + ps.setObject(8, data.getArea4()); + ps.setObject(9, data.getArea6()); + + ps.setObject(10, data.getRentalarea()); + ps.setObject(11, data.getSelfusearea()); + ps.setObject(12, data.getStruture()); + ps.setObject(13, data.getElevatorNO()); + ps.setObject(14, data.getActime()); + + ps.setObject(15, data.getSpace()); + ps.setObject(16, data.getOwner()); + ps.setTimestamp(17, new Timestamp(data.getCreated().getTime())); + ps.setTimestamp(18, new Timestamp(data.getModified().getTime())); + ps.setObject(19, data.getCreated_by()); + ps.setObject(20, data.getModified_by()); + ps.setObject(21, data.getCompany_id()); + ps.setObject(22, data.getArea5()); + ps.setObject(23, data.getArea7()); + ps.setObject(24, data.getElectedload()); + ps.setObject(25, data.getLoadbearing()); + ps.setObject(26, data.getMoreinfo()); + ps.setObject(27, data.getHight()); + ps.setObject(28, data.getRegister_name2()); + ps.setObject(29, data.getPark_Location()); + ps.addBatch(); // 将sql语句打包到一个容器中 + if (i % group == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("楼宇表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("楼宇表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtil.getClose(); + } + } + + /** + * 客户合同 + */ + @Override + public void SynchronousDataContracts() { + long start = System.currentTimeMillis(); + log.info("客户合同表同步开始"); + try { + Connection conn = JDBCUtil.getConnection(); + Statement stat = JDBCUtil.getStatement(); + JDBCUtil.executeUpdate("DELETE FROM contracts"); + String sql = "insert into contracts( _id, contractNO, clientname, contractor, " + + "building_select, start_date, end_date, bop4, free_period_fees," + + " free_period_fees_amount, contract_type1, rentalamount, serviceamount, depositcycle, " + + "paymentcycle, bop3, remark, signed_date, meetingstate, " + + "contract_fulfillment_state, space, owner, created, modified, " + + "created_by, modified_by, company_id, rentalsquare, name, " + + "contract_type2, free_period_start, free_period_end, contract_end_time, remark2," + + " remark3, subject) " + + "VALUES (" + + "?, ?, ?, ?, ?," + + " ?, ?, ?, ?, ?," + + " ?, ?, ?, ?, ?," + + " ?, ?, ?, ?, ?," + + " ?, ?, ?, ?, ?," + + " ?, ?, ?, ?, ?," + + " ?, ?, ?, ?, ?," + + " ?)"; + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + Query query = new Query(); + long count = mongoTemplate.count(query, Contracts.class); + if (count == 0) { + return; + } + //每页条数 + int ceil = (int) Math.ceil((double) count / (double) pageSize); + for (int currPage = 0; currPage < ceil; currPage++) { + List all = mongoTemplate.find(query.with(new PageRequest(currPage, pageSize)), Contracts.class); + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Contracts data = all.get(i - 1); + ps.setObject(1, data.get_id()); + ps.setObject(2, data.getContractNO()); + ps.setObject(3, data.getClientname()); + ps.setObject(4, data.getContractor()); + ps.setObject(5, data.getBuilding_select()); + ps.setTimestamp(6, data.getStart_date() == null ? null : new Timestamp(data.getStart_date().getTime())); + ps.setTimestamp(7, data.getEnd_date() == null ? null : new Timestamp(data.getEnd_date().getTime())); + ps.setObject(8, data.getBop4()); + ps.setObject(9, data.getFree_period_fees()); + ps.setObject(10, data.getFree_period_fees_amount()); + ps.setObject(11, data.getContract_type1()); + ps.setObject(12, "*"); + ps.setObject(13, data.getServiceamount()); + ps.setObject(14, data.getDepositcycle()); + ps.setObject(15, data.getPaymentcycle()); + ps.setObject(16, data.getBop3()); + ps.setObject(17, data.getRemark()); + ps.setTimestamp(18, data.getSigned_date() == null ? null : new Timestamp(data.getSigned_date().getTime())); + ps.setObject(19, data.getMeetingstate()); + ps.setObject(20, data.getContract_fulfillment_state()); + ps.setObject(21, data.getSpace()); + ps.setObject(22, data.getOwner()); + ps.setTimestamp(23, data.getCreated() == null ? null : new Timestamp(data.getCreated().getTime())); + ps.setTimestamp(24, data.getModified() == null ? null : new Timestamp(data.getModified().getTime())); + ps.setObject(25, data.getCreated_by()); + ps.setObject(26, data.getModified_by()); + ps.setObject(27, data.getCompany_id()); + ps.setObject(28, data.getRentalsquare()); + ps.setObject(29, data.getName()); + ps.setObject(30, data.getContract_type2()); + ps.setTimestamp(31, data.getFree_period_start() == null ? null : new Timestamp(data.getFree_period_start().getTime())); + ps.setTimestamp(32, data.getFree_period_end() == null ? null : new Timestamp(data.getFree_period_end().getTime())); + ps.setTimestamp(33, data.getContract_end_time() == null ? null : new Timestamp(data.getContract_end_time().getTime())); + ps.setObject(34, data.getRemark2()); + ps.setObject(35, data.getRemark3()); + ps.setObject(36, data.getSubject()); + ps.addBatch(); // 将sql语句打包到一个容器中 + if (i % group == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + e.printStackTrace(); + log.info("客户合同表同步失败: {}", System.currentTimeMillis() - start); + } finally { + log.info("客户合同表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtil.getClose(); + } + + } + + /** + * 客户合同房间 + */ + @Override + public void SynchronousDataContractsRoom() { + long start = System.currentTimeMillis(); + log.info("客户合同房间表同步开始"); + try { + Connection conn = JDBCUtil.getConnection(); + Statement stat = JDBCUtil.getStatement(); + JDBCUtil.executeUpdate("DELETE FROM contracts_room"); + String sql = "insert into contracts_room(id, _id, roomId) VALUES (?, ?, ?)"; + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + Query query = new Query(); + long count = mongoTemplate.count(query, Contracts.class); + if (count == 0) { + return; + } + //每页条数 + int ceil = (int) Math.ceil((double) count / (double) pageSize); + for (int currPage = 0; currPage < ceil; currPage++) { + List all = mongoTemplate.find(query.with(new PageRequest(currPage, pageSize)), Contracts.class); + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Contracts data = all.get(i - 1); + if (data.getRoom_number() !=null && data.getRoom_number().size()>0){ + for (String roomId : data.getRoom_number()) { + String uuid = UUID.randomUUID().toString().trim().replaceAll("-", ""); + ps.setObject(1, uuid); + ps.setObject(2, data.get_id()); + ps.setObject(3, roomId); + ps.addBatch(); // 将sql语句打包到一个容器中 + if (i % group == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + } + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + e.printStackTrace(); + log.info("客户合同房间表同步失败: {}", System.currentTimeMillis() - start); + } finally { + log.info("客户合同房间表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtil.getClose(); + } + } + + /** + * 客户 + */ + @Override + public void SynchronousDataAccounts() { + long start = System.currentTimeMillis(); + log.info("客户表同步开始"); + try { + Connection conn = JDBCUtil.getConnection(); + Statement stat = JDBCUtil.getStatement(); + JDBCUtil.executeUpdate("DELETE FROM accounts"); + String sql = "insert into accounts(" + + " _id, name, tax_number, in_time, " + + "in_or_out, invoice_type, regis_amount, financing_amount, space, " + + "owner, created, modified, created_by, modified_by, " + + "company_id, regis_time, regis_location, Legal_person, out_time) " + + "VALUES (" + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?)"; + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + Query query = new Query(); + long count = mongoTemplate.count(query, Accounts.class); + if (count == 0) { + return; + } + //每页条数 + int ceil = (int) Math.ceil((double) count / (double) pageSize); + for (int currPage = 0; currPage < ceil; currPage++) { + List all = mongoTemplate.find(query.with(new PageRequest(currPage, pageSize)), Accounts.class); + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Accounts data = all.get(i - 1); + ps.setObject(1, data.get_id()); + ps.setObject(2, data.getName()); + ps.setObject(3, data.getTax_number()); + ps.setTimestamp(4, data.getIn_time() == null ? null : new Timestamp(data.getIn_time().getTime())); + + + ps.setObject(5, data.getIn_or_out()); + ps.setObject(6, data.getInvoice_type()); + ps.setObject(7, data.getRegis_amount()); + ps.setObject(8, data.getFinancing_amount()); + ps.setObject(9, data.getSpace()); + + ps.setObject(10, data.getOwner()); + ps.setTimestamp(11, data.getCreated() == null ? null : new Timestamp(data.getCreated().getTime())); + ps.setTimestamp(12, data.getModified() == null ? null : new Timestamp(data.getModified().getTime())); + ps.setObject(13, data.getCreated_by()); + ps.setObject(14, data.getModified_by()); + + ps.setObject(15, data.getCompany_id()); + ps.setTimestamp(16, data.getRegis_time() == null ? null : new Timestamp(data.getRegis_time().getTime())); + ps.setObject(17, data.getRegis_location()); + ps.setObject(18, data.getLegal_person()); + ps.setTimestamp(19, data.getOut_time() == null ? null : new Timestamp(data.getOut_time().getTime())); + ps.addBatch(); // 将sql语句打包到一个容器中 + if (i % group == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("客户表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("客户表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtil.getClose(); + } + } + + /** + * 合同收款 + */ + @Override + public void SynchronousDataContractReceipts() { + long start = System.currentTimeMillis(); + log.info("合同收款表同步开始"); + try { + Connection conn = JDBCUtil.getConnection(); + Statement stat = JDBCUtil.getStatement(); + JDBCUtil.executeUpdate("DELETE FROM contract_receipts"); + String sql = "insert into contract_receipts(" + + "_id, fees_type, account, contract, " + + "contract_start_date, contract_end_date, fee_period_start, fee_period_end, receipts_contractor, " + + "building, amount, paid_amount, space, owner, " + + "created, modified, name, unpaid_amount, modified_by, " + + "paid_date, paid_real_date, fees_finished, searchFunc) " + + "VALUES (" + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?, " + + "?, ?, ?, ?, ?, " + + "?, ?, ?)"; + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + Query query = new Query(); + long count = mongoTemplate.count(query, ContractReceipts.class); + if (count == 0) { + return; + } + //每页条数 + int ceil = (int) Math.ceil((double) count / (double) pageSize); + for (int currPage = 0; currPage < ceil; currPage++) { + List all = mongoTemplate.find(query.with(new PageRequest(currPage, pageSize)), ContractReceipts.class); + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + ContractReceipts data = all.get(i - 1); + ps.setObject(1, data.get_id()); + ps.setObject(2, data.getFees_type()); + ps.setObject(3, data.getAccount()); + ps.setObject(4, data.getContract()); + ps.setTimestamp(5, data.getContract_start_date() == null ? null : new Timestamp(data.getContract_start_date().getTime())); + ps.setTimestamp(6, data.getContract_end_date() == null ? null : new Timestamp(data.getContract_end_date().getTime())); + ps.setTimestamp(7, data.getFee_period_start() == null ? null : new Timestamp(data.getFee_period_start().getTime())); + ps.setTimestamp(8, data.getFee_period_end() == null ? null : new Timestamp(data.getFee_period_end().getTime())); + ps.setObject(9, data.getReceipts_contractor()); + ps.setObject(10, data.getBuilding()); + ps.setObject(11, data.getAmount()); + ps.setObject(12, data.getPaid_amount()); + ps.setObject(13, data.getSpace()); + ps.setObject(14, data.getOwner()); + ps.setTimestamp(15, data.getCreated() == null ? null : new Timestamp(data.getCreated().getTime())); + ps.setTimestamp(16, data.getModified() == null ? null : new Timestamp(data.getModified().getTime())); + ps.setObject(17, data.getName()); + ps.setObject(18, data.getUnpaid_amount()); + ps.setObject(19, data.getModified_by()); + ps.setTimestamp(20, data.getPaid_date() == null ? null : new Timestamp(data.getPaid_date().getTime())); + ps.setTimestamp(21, data.getPaid_real_date() == null ? null : new Timestamp(data.getPaid_real_date().getTime())); + ps.setObject(22, data.getFees_finished()); + ps.setObject(23, data.getSearchFunc()); + ps.addBatch(); // 将sql语句打包到一个容器中 + if (i % group == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("合同收款表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("合同收款表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtil.getClose(); + } + } + + /** + * 测试使用 + */ + @Override + public void SynchronousDataContractAuditRecords() { + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtil.getConnection(); + Statement stat = JDBCUtil.getStatement(); + JDBCUtil.executeUpdate("DELETE FROM audit_records"); + String sql = "insert into audit_records(id, _id) VALUES (?, ?)"; + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + Query query = new Query(); + long count = mongoTemplate.count(query, AuditRecords.class); + if (count == 0) { + return; + } + //每页条数 + int ceil = (int) Math.ceil((double) count / (double) pageSize); + for (int currPage = 0; currPage < ceil; currPage++) { + List all = mongoTemplate.find(query.with(new PageRequest(currPage, pageSize)), AuditRecords.class); + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + AuditRecords data = all.get(i - 1); + ps.setObject(1, ((currPage * pageSize) + i)); + ps.setObject(2, data.get_id()); + ps.addBatch(); + if (i % group == 0) { + ps.executeBatch(); + ps.clearBatch(); + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit(); + } + } catch (Exception e) { + log.info("测试表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("测试表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtil.getClose(); + } + } + +} diff --git a/src/main/java/com/songshu/mongo/service/impl/UpdateTingcheServiceImpl.java b/src/main/java/com/songshu/mongo/service/impl/UpdateTingcheServiceImpl.java new file mode 100644 index 0000000..20ff053 --- /dev/null +++ b/src/main/java/com/songshu/mongo/service/impl/UpdateTingcheServiceImpl.java @@ -0,0 +1,425 @@ +package com.songshu.mongo.service.impl; + +import com.songshu.mongo.model.dto.Room; +import com.songshu.mongo.service.UpdateTingcheService; +import com.songshu.mongo.tools.JDBCUtil; +import com.songshu.mongo.tools.JDBCUtilMysql; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.ObjectUtils; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Service; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +@Service +public class UpdateTingcheServiceImpl implements UpdateTingcheService { + + + /** + * tj_tcsjtjn + */ + @Override + public void updateTjTcsjtjn() { + log.info("tj_tcsjtjn"); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtilMysql.getConnection(); + Statement stat = JDBCUtilMysql.getStatement(); + JDBCUtilMysql.executeUpdate("DELETE FROM tj_tcsjtjn"); + String sql = "insert into tj_tcsjtjn(threelow,threeToFive,fiveToEight,eightup) VALUES (?, ?, ?, ?)"; + String selectSql = "select " + + "ifnull(sum(case when TIMESTAMPDIFF(hour,rcsj,ccsj) <= 3 then 1 else 0 end),0) threelow, " + + "ifnull(sum(case when TIMESTAMPDIFF(hour,rcsj,ccsj) > 3 and TIMESTAMPDIFF(hour,rcsj,ccsj) <= 5 then 1 else 0 end),0) threeToFive, " + + "ifnull(sum(case when TIMESTAMPDIFF(hour,rcsj,ccsj) > 5 and TIMESTAMPDIFF(hour,rcsj,ccsj) <= 8 then 1 else 0 end),0) fiveToEight, " + + "ifnull(sum(case when TIMESTAMPDIFF(hour,rcsj,ccsj) > 8 then 1 else 0 end),0) eightup " + + "from vehicle_records where year(ccsj) = year(SYSDATE())"; + ArrayList all = getQueryList(conn, selectSql); + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + if (all == null || all.size() == 0) { + return; + } + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Map data = all.get(i - 1); + ps.setObject(1, data.get("threelow")); + ps.setObject(2, data.get("threeToFive")); + ps.setObject(3, data.get("fiveToEight")); + ps.setObject(4, data.get("eightup")); + ps.addBatch(); + if (i % 500 == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("tj_tcsjtjn表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("tj_tcsjtjn表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtilMysql.getClose(); + } + } + + /** + * tj_cljrsctjn + */ + @Override + public void updateTjCljrsctjn() { + log.info("tj_cljrsctjn"); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtilMysql.getConnection(); + Statement stat = JDBCUtilMysql.getStatement(); + JDBCUtilMysql.executeUpdate("DELETE FROM tj_cljrsctjn"); + String sql = "insert into tj_cljrsctjn(y,rcsl,ccsl) VALUES (?, ?, ?)"; + String selectSql = " SELECT a.y,ifnull(b.sl,0) AS rcsl,ifnull(c.sl,0) AS ccsl FROM ( " + + "SELECT help_keyword_id y FROM mysql.help_keyword HAVING y BETWEEN 1 AND 12 ORDER BY 1) a LEFT JOIN ( " + + "SELECT temp.y,sum(temp.sl) AS sl FROM ( " + + "SELECT MONTH (rcsj) AS y,count(MONTH (rcsj)) sl FROM vehicle_records WHERE YEAR (rcsj)=YEAR (sysdate()) GROUP BY MONTH (rcsj) UNION ALL " + + "SELECT MONTH (rcsj) AS y,count(MONTH (rcsj)) sl FROM parking_vehicles WHERE YEAR (sysdate())=YEAR (rcsj) GROUP BY MONTH (rcsj)) temp GROUP BY temp.y) b ON a.y=b.y LEFT JOIN ( " + + "SELECT MONTH (ccsj) AS y,count(*) AS sl FROM vehicle_records WHERE ccsj IS NOT NULL AND YEAR (ccsj)=YEAR (sysdate()) GROUP BY MONTH (ccsj)) c ON a.y=c.y "; + ArrayList all = getQueryList(conn, selectSql); + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + if (all == null || all.size() == 0) { + return; + } + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Map data = all.get(i - 1); + ps.setObject(1, data.get("y")); + ps.setObject(2, data.get("rcsl")); + ps.setObject(3, data.get("ccsl")); + ps.addBatch(); + if (i % 500 == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("tj_cljrsctjn表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("tj_cljrsctjn表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtilMysql.getClose(); + } + } + + /** + * tj_cljrsctjy + */ + @Override + public void updateTjCljrsctjy() { + log.info("tj_cljrsctjy"); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtilMysql.getConnection(); + Statement stat = JDBCUtilMysql.getStatement(); + JDBCUtilMysql.executeUpdate("DELETE FROM tj_cljrsctjy"); + String sql = "insert into tj_cljrsctjy(r,rcsl,ccsl) VALUES (?, ?, ?)"; + String selectSql = " SELECT a.r,ifnull(b.sl,0) AS rcsl,ifnull(c.sl,0) AS ccsl FROM (SELECT help_keyword_id r FROM mysql.help_keyword HAVING r BETWEEN 1 AND DAY (last_day(sysdate())) ORDER BY 1) a LEFT JOIN (SELECT temp.r,sum(temp.sl) sl FROM (SELECT DAY (rcsj) AS r,count(DAY (rcsj)) sl FROM vehicle_records WHERE date_format(rcsj,'%y%m')=date_format(sysdate(),'%y%m') GROUP BY DAY (rcsj) UNION ALL SELECT DAY (rcsj) AS r,count(DAY (rcsj)) sl FROM parking_vehicles WHERE date_format(rcsj,'%y%m')=date_format(sysdate(),'%y%m') GROUP BY DAY (rcsj)) temp GROUP BY temp.r) b ON a.r=b.r LEFT JOIN (SELECT date_format(ccsj,'%y%m') AS ny,DAY (ccsj) AS r,count(*) AS sl FROM vehicle_records WHERE rcsj IS NOT NULL AND date_format(ccsj,'%y%m')=date_format(sysdate(),'%y%m') GROUP BY date_format(ccsj,'%y%m'),DAY (ccsj)) c ON a.r=c.r"; + ArrayList all = getQueryList(conn, selectSql); + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + if (all == null || all.size() == 0) { + return; + } + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Map data = all.get(i - 1); + ps.setObject(1, data.get("r")); + ps.setObject(2, data.get("rcsl")); + ps.setObject(3, data.get("ccsl")); + ps.addBatch(); + if (i % 500 == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("tj_cljrsctjy表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("tj_cljrsctjy表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtilMysql.getClose(); + } + } + + /** + * tj_cljrsctjr + */ + @Override + public void updateTjCljrsctjr() { + log.info("tj_cljrsctjr"); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtilMysql.getConnection(); + Statement stat = JDBCUtilMysql.getStatement(); + JDBCUtilMysql.executeUpdate("DELETE FROM tj_cljrsctjr"); + String sql = "insert into tj_cljrsctjr(x,rcsl,ccsl) VALUES (?, ?, ?)"; + String selectSql = " SELECT a.x,ifnull(sum(b.sl),0) AS rcsl,IFNULL(sum(c.sl),0) AS ccsl FROM ( \n" + + " SELECT help_keyword_id x FROM mysql.help_keyword HAVING x BETWEEN 0 AND 23 ORDER BY 1) a \n" + + " LEFT JOIN " + + " ( " + + " SELECT temp.x,count(*) AS sl FROM " + + " (" + + " SELECT date_format(rcsj,'%H') AS x FROM vehicle_records WHERE rcsj IS NOT NULL AND date_format(rcsj,'%y%m%d')=date_format(SYSDATE(),'%y%m%d') " + + " UNION ALL " + + " SELECT date_format(rcsj,'%H') AS x FROM parking_vehicles WHERE rcsj IS NOT NULL AND date_format(rcsj,'%y%m%d')=date_format(SYSDATE(),'%y%m%d')" + + " ) temp GROUP BY temp.x" + + " ) b ON a.x=b.x " + + " LEFT JOIN " + + " ( " + + " SELECT date_format(ccsj,'%H') AS x,count(*) AS sl FROM vehicle_records WHERE date_format(ccsj,'%y%m%d')=date_format(SYSDATE(),'%y%m%d') GROUP BY date_format(ccsj,'%H')) c " + + " ON a.x=c.x GROUP BY a.x ORDER BY a.x "; + ArrayList all = getQueryList(conn, selectSql); + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + if (all == null || all.size() == 0) { + return; + } + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Map data = all.get(i - 1); + ps.setObject(1, data.get("x")); + ps.setObject(2, data.get("rcsl")); + ps.setObject(3, data.get("ccsl")); + ps.addBatch(); + if (i % 500 == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("tj_cljrsctjr表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("tj_cljrsctjr表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtilMysql.getClose(); + } + } + + /** + * tj_jrcrktcsj + */ + @Override + public void updateTjJrcrktcsj() { + log.info("tj_jrcrktcsj"); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtilMysql.getConnection(); + Statement stat = JDBCUtilMysql.getStatement(); + JDBCUtilMysql.executeUpdate("DELETE FROM tj_jrcrktcsj"); + String sql = "insert into tj_jrcrktcsj(cphm,zhlx,rcsj,ccsj,tcsj,ssje,rctd,cctd) VALUES (?, ?, ?,?, ?, ?,?, ?)"; + String selectSql = "select \n" + + "vehicle_records.cphm,\n" + + "vehicle_records.zhlx,\n" + + "vehicle_records.rcsj,\n" + + "vehicle_records.ccsj,\n" + + "round(timestampdiff(minute,vehicle_records.rcsj,vehicle_records.ccsj)/60,2) as tcsj,\n" + + "ifnull(parking_payment.ssje,0) ssje,\n" + + "vehicle_records.rctd as rctd,\n" + + "vehicle_records.cctd as cctd\n" + + "from\n" + + "vehicle_records\n" + + "left join parking_payment on parking_payment.cphm = vehicle_records.cphm and parking_payment.rcsj = vehicle_records.rcsj\n" + + "where date_format(vehicle_records.rcsj,'%y%m%d') = date_format(NOW(),'%y%m%d')"; + ArrayList all = getQueryList(conn, selectSql); + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + if (all == null || all.size() == 0) { + return; + } + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Map data = all.get(i - 1); + ps.setObject(1, data.get("cphm")); + ps.setObject(2, data.get("zhlx")); + ps.setObject(3, data.get("rcsj")); + ps.setObject(4, data.get("ccsj")); + ps.setObject(5, data.get("tcsj")); + ps.setObject(6, data.get("ssje")); + ps.setObject(7, data.get("rctd")); + ps.setObject(8, data.get("cctd")); + ps.addBatch(); + if (i % 500 == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("tj_jrcrktcsj表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("tj_jrcrktcsj表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtilMysql.getClose(); + } + } + + + /** + * tj_parking_payment + */ + @Override + public void updateTjParkingPayment() { + log.info("tj_parking_payment"); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtilMysql.getConnection(); + Statement stat = JDBCUtilMysql.getStatement(); + JDBCUtilMysql.executeUpdate("DELETE FROM tj_parking_payment"); + String sql = "insert into tj_parking_payment(xh,cphm,zhlx,rcsj,sfsj,sfy,gtmc,ysje,ssje,cxye,dzje,mfje,sflx,zflx,ddh) VALUES " + + "(?, ?, ?,?, ?, " + + "?,?, ?, ?, ?," + + "?,?, ?, ?, ?)"; + String selectSql = "SELECT xh,cphm,zhlx,rcsj,sfsj,sfy,gtmc,ysje,ssje,cxye,dzje,mfje,sflx,zflx,ddh FROM parking_payment where date_format(rcsj,'%y%m%d') = date_format(NOW(),'%y%m%d') or date_format(sfsj,'%y%m%d') = date_format(NOW(),'%y%m%d')"; + ArrayList all = getQueryList(conn, selectSql); + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + if (all == null || all.size() == 0) { + return; + } + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Map data = all.get(i - 1); + ps.setObject(1, data.get("xh")); + ps.setObject(2, data.get("cphm")); + ps.setObject(3, data.get("zhlx")); + ps.setObject(4, data.get("rcsj")); + ps.setObject(5, data.get("sfsj")); + + ps.setObject(6, data.get("sfy")); + ps.setObject(7, data.get("gtmc")); + ps.setObject(8, data.get("ysje")); + ps.setObject(9, data.get("ssje")); + ps.setObject(10, data.get("cxye")); + + ps.setObject(11, data.get("dzje")); + ps.setObject(12, data.get("mfje")); + ps.setObject(13, data.get("sflx")); + ps.setObject(14, data.get("zflx")); + ps.setObject(15, data.get("ddh")); + + ps.addBatch(); + if (i % 500 == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("tj_jrcrktcsj表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("tj_jrcrktcsj表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtilMysql.getClose(); + } + } + + + /** + * tj_vehicle_records + */ + @Override + public void updateTjVehicleRecords() { + log.info("tj_vehicle_records"); + long start = System.currentTimeMillis(); + try { + Connection conn = JDBCUtilMysql.getConnection(); + Statement stat = JDBCUtilMysql.getStatement(); + JDBCUtilMysql.executeUpdate("DELETE FROM tj_vehicle_records"); + String sql = "insert into tj_vehicle_records(xh,cphm,zhlx,czxm,rcsj,rctd,ccsj,cctd,ccfs) VALUES " + + "(?, ?, ?,?, ?, " + + "?,?, ?, ?)"; + String selectSql = "SELECT * FROM vehicle_records where date_format(vehicle_records.rcsj,'%y%m%d') = date_format(NOW(),'%y%m%d')\n" + + "or date_format(vehicle_records.ccsj,'%y%m%d') = date_format(NOW(),'%y%m%d')"; + ArrayList all = getQueryList(conn, selectSql); + PreparedStatement ps = null; + ps = conn.prepareStatement(sql); + conn.setAutoCommit(false);//取消自动提交 + if (all == null || all.size() == 0) { + return; + } + int size = all.size(); + for (int i = 1; i < size + 1; i++) { + Map data = all.get(i - 1); + ps.setObject(1, data.get("xh")); + ps.setObject(2, data.get("cphm")); + ps.setObject(3, data.get("zhlx")); + ps.setObject(4, data.get("czxm")); + ps.setObject(5, data.get("rcsj")); + + ps.setObject(6, data.get("rctd")); + ps.setObject(7, data.get("ccsj")); + ps.setObject(8, data.get("cctd")); + ps.setObject(9, data.get("ccfs")); + ps.addBatch(); + if (i % 500 == 0) { + ps.executeBatch(); // 将容器中的sql语句提交 + ps.clearBatch(); // 清空容器,为下一次打包做准备 + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit();//所有语句都执行完毕后才手动提交sql语句 + } catch (Exception e) { + log.info("tj_vehicle_records表同步失败: {}", System.currentTimeMillis() - start); + e.printStackTrace(); + } finally { + log.info("tj_vehicle_records表同步结束: {}", System.currentTimeMillis() - start); + JDBCUtilMysql.getClose(); + } + } + + + private ArrayList getQueryList(Connection conn, String selectSql) throws SQLException { + ArrayList all = new ArrayList(); + ArrayList titleNameList = new ArrayList<>(); + Statement st = conn.createStatement(); + ResultSet rs = st.executeQuery(selectSql); + int columnCount = rs.getMetaData().getColumnCount(); + for (int i = 0; i < columnCount; i++) { + titleNameList.add(rs.getMetaData().getColumnLabel((i + 1))); + } + while (rs.next()) { + HashMap map = new HashMap<>(); + for (String name : titleNameList) { + map.put(name, rs.getString(name)); + } + all.add(map); + } + return all; + } + + +} diff --git a/src/main/java/com/songshu/mongo/test/BookMongoControllerTest.java b/src/main/java/com/songshu/mongo/test/BookMongoControllerTest.java new file mode 100644 index 0000000..a7d9542 --- /dev/null +++ b/src/main/java/com/songshu/mongo/test/BookMongoControllerTest.java @@ -0,0 +1,175 @@ +package com.songshu.mongo.test; + +import com.alibaba.fastjson.JSON; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.songshu.mongo.model.json.JsonString; +import com.songshu.mongo.model.dto.BookDTO; +import com.songshu.mongo.service.BookMongoService; +import com.songshu.mongo.service.StaticScheduleTaskService; +import com.songshu.mongo.service.UpdateTingcheService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + + +@SpringBootTest +@RunWith(SpringRunner.class) +public class BookMongoControllerTest { + + @Autowired + private BookMongoService bookMongoService; + @Autowired + private StaticScheduleTaskService staticScheduleTaskService; + @Autowired + private UpdateTingcheService updateTingcheService; + + /** + * 测试json转对象(for:拿示例json数据做批量新增) + * + * @throws JsonProcessingException + */ + @Test + public void jsonToObj() throws JsonProcessingException { + String jsonString = JsonString.jsonString; + // json转对象集合 + List bookDTOList = JSON.parseArray(jsonString, BookDTO.class); + System.out.println(bookDTOList); + //集合转对象 + // String json = new ObjectMapper().writeValueAsString(bookDTOList); + } + + /** + * 新增)(单个新增) + */ + @Test + public void insert() { + BookDTO bookDTO = new BookDTO(); + bookDTO.setId("5"); + bookDTO.setName("万界圣主"); + bookDTO.setPrice("17.8"); + bookDTO.setType("仙侠"); + bookDTO.setReadedNum(Double.parseDouble("10.7")); + bookMongoService.inserBookInfo(bookDTO); + } + + /** + * 新增(批量新增) + */ + @Test + public void insertBatch() { + // 拿到示例json数据 + String jsonString = JsonString.jsonString; + // json转对象集合 + List bookDTOList = JSON.parseArray(jsonString, BookDTO.class); + bookMongoService.inserBatchBookInfo(bookDTOList); + } + + /** + * 修改 + */ + @Test + public void update() { + // 条件 + Query query = Query.query(Criteria.where("_id").is("2")); + // 修改内容 + Update update = Update.update("price", "19.9"); + bookMongoService.updateBookInfo(query, update); + + } + + /** + * 查询所有 + */ + @Test + public void findAll() { + List allBookInfo = bookMongoService.findAllBookInfo(); + System.out.println(allBookInfo); + } + + /** + * 根据书名查询:精准 + */ + @Test + public void findByName() { + String name = "盗墓笔记"; + List allBookInfo = bookMongoService.findBookInfoByName(name); + System.out.println(allBookInfo); + } + + /** + * 根据书名查询: 模糊查 + */ + @Test + public void findReName() { + String name = "主"; + List allBookInfo = bookMongoService.findBookInfoReName(name); + System.out.println(allBookInfo); + } + + /** + * 根据阅读量:范围查询,排序 + */ + @Test + public void findReRange() { + // 注意,这里范围查询得时候,直接用作字符串去查,并不会把字符串里面得数字提取出来然后做范围查询,所以这里改成Double,改成Long坑太多. + Double minReadedNum = Double.parseDouble("8.3"); + Double maxReadedNum = Double.parseDouble("18.0"); + List allBookInfo = bookMongoService.findBookInfoReRange(minReadedNum, maxReadedNum); + System.out.println(allBookInfo); + } + + /** + * 根据阅读量:范围查询,排序,分页(页码是物理下标,入数是逻辑下标) + */ + @Test + public void findPage() { + // 注意,这里范围查询得时候,直接用作字符串去查,并不会把字符串里面得数字提取出来然后做范围查询,所以这里改成Double,改成Long坑太多. + Double minReadedNum = Double.parseDouble("7.0"); + Double maxReadedNum = Double.parseDouble("35.9"); + Integer pageNum = 2; + Integer pageSize = 2; + List allBookInfo = bookMongoService.findBookInfoPage(minReadedNum, maxReadedNum, pageNum, pageSize); + System.out.println(allBookInfo); + } + + // 高级查询待写........ + + /** + * 测试用 + */ + @Test + public void findAll3() { + +// staticScheduleTaskService.SynchronousDataRuildings(); + +// staticScheduleTaskService.SynchronousDataContractsRoom(); +// staticScheduleTaskService.SynchronousDataRuildings(); +// staticScheduleTaskService.SynchronousDataRoom(); +// staticScheduleTaskService.SynchronousDataContracts(); +// staticScheduleTaskService.SynchronousDataAccounts(); +// staticScheduleTaskService.SynchronousDataContractReceipts(); + + +// staticScheduleTaskService.SynchronousDataContractAuditRecords(); +// List allBookInfo = bookMongoService.findAllBookInfo3(); + +// +// updateTingcheService.updateTjTcsjtjn(); +// updateTingcheService.updateTjCljrsctjn(); +// updateTingcheService.updateTjCljrsctjy(); +// updateTingcheService.updateTjCljrsctjr(); + +// updateTingcheService.updateTjJrcrktcsj(); 不用了 + + +// updateTingcheService.updateTjParkingPayment(); +// updateTingcheService.updateTjVehicleRecords(); + } +} diff --git a/src/main/java/com/songshu/mongo/tools/JDBCUtil.java b/src/main/java/com/songshu/mongo/tools/JDBCUtil.java new file mode 100644 index 0000000..ed166ec --- /dev/null +++ b/src/main/java/com/songshu/mongo/tools/JDBCUtil.java @@ -0,0 +1,164 @@ +package com.songshu.mongo.tools; + +import lombok.extern.slf4j.Slf4j; + +import java.sql.*; +import java.util.ArrayList; +import java.util.Map; + +@Slf4j +public class JDBCUtil { + private static Connection connection = null; + private static Statement statement = null; + private static ResultSet result = null; + +// //测试 +// private static String url = "jdbc:mysql://192.168.145.30:3306/steedos2?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true"; +// private static String username = "root"; +// private static String password = "Peony@2022"; +// private static String driver="com.mysql.jdbc.Driver"; + +// //测试 +// private static String url = "jdbc:mysql://192.168.3.5:3306/zulin?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true"; +// private static String username = "root"; +// private static String password = "Peony@2021"; +// private static String driver="com.mysql.jdbc.Driver"; + //生产 + private static String url = "jdbc:mysql://192.168.145.30:3306/steedos?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true"; + private static String username = "root"; + private static String password = "Peony@2022"; + private static String driver="com.mysql.jdbc.Driver"; + static { + try { + //4.注册驱动 + Class.forName(driver); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static Connection getConnection() { + try { +// log.info("开始连接mysql"); +// log.info("url----------------》"+url); +// log.info("username----------------》"+username); +// log.info("password----------------》"+password); + connection = DriverManager.getConnection(url, username, password); + } catch (SQLException e) { + // TODO: handle exception + } +// log.info("连接mysql connection---------》"+connection); + return connection; + + } + + public static Statement getStatement() { + try { +// log.info("创建Statement 对象"); +// log.info("connection----------------》"+connection); + statement = connection.createStatement(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +// log.info("创建Statement 对象statement--------》"+statement); + return statement; + + } + + /** + * 查询 + * + * @param sql + * @return + */ + public static ResultSet executeQuery(String sql) { + try { + result = statement.executeQuery(sql); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; + } + + /** + * 修改 + * + * @param sql + * @return + */ + public static int executeUpdate(String sql) { + try { + int i = statement.executeUpdate(sql); + return i; + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return 0; + } + + public static void getClose() { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + connection = null; + } + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + statement = null; + } + if (result != null) { + try { + result.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + result = null; + } + } + } + + /** + * 查询sql + * + * @param sql + * @return + */ + public static ArrayList executeQueryList(String sql) { + ArrayList titleNameList = new ArrayList<>(); + ArrayList datalist = new ArrayList(); + try { + result = statement.executeQuery(sql); + int columnCount = result.getMetaData().getColumnCount(); + for (int i = 0; i < columnCount; i++) { + titleNameList.add(result.getMetaData().getColumnLabel((i + 1))); + } + while (result.next()) { + for (String name : titleNameList) { + datalist.add(MapFactory.create().put(name, result.getString(name)).getData()); + } + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return datalist; + } + + +} + diff --git a/src/main/java/com/songshu/mongo/tools/JDBCUtilMysql.java b/src/main/java/com/songshu/mongo/tools/JDBCUtilMysql.java new file mode 100644 index 0000000..dbdbce9 --- /dev/null +++ b/src/main/java/com/songshu/mongo/tools/JDBCUtilMysql.java @@ -0,0 +1,167 @@ +package com.songshu.mongo.tools; + +import lombok.extern.slf4j.Slf4j; + +import java.sql.*; +import java.util.ArrayList; +import java.util.Map; + +@Slf4j +public class JDBCUtilMysql { + private static Connection connection = null; + private static Statement statement = null; + private static ResultSet result = null; + +// //测试 +// private static String url = "jdbc:mysql://192.168.145.30:3306/steedos2?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true"; +// private static String username = "root"; +// private static String password = "Peony@2022"; +// private static String driver="com.mysql.jdbc.Driver"; + +// //测试 +// private static String url = "jdbc:mysql://192.168.3.5:3306/zulin?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true"; +// private static String username = "root"; +// private static String password = "Peony@2021"; +// private static String driver="com.mysql.jdbc.Driver"; + //生产 + private static String url = "jdbc:mysql://192.168.145.30:3306/tingche?useUnicode=true&characterEncoding=utf-8" + + "&rewriteBatchedStatements=true" + + "&loginTimeout=6000000"; + private static String username = "tingchegl"; + private static String password = "tingchegl@123"; + private static String driver="com.mysql.jdbc.Driver"; + static { + try { + //4.注册驱动 + Class.forName(driver); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static Connection getConnection() { + try { +// log.info("开始连接mysql"); +// log.info("url----------------》"+url); +// log.info("username----------------》"+username); +// log.info("password----------------》"+password); + DriverManager.setLoginTimeout(6000000); + connection = DriverManager.getConnection(url, username, password); + } catch (SQLException e) { + // TODO: handle exception + } +// log.info("连接mysql connection---------》"+connection); + return connection; + + } + + public static Statement getStatement() { + try { +// log.info("创建Statement 对象"); +// log.info("connection----------------》"+connection); + statement = connection.createStatement(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +// log.info("创建Statement 对象statement--------》"+statement); + return statement; + + } + + /** + * 查询 + * + * @param sql + * @return + */ + public static ResultSet executeQuery(String sql) { + try { + result = statement.executeQuery(sql); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; + } + + /** + * 修改 + * + * @param sql + * @return + */ + public static int executeUpdate(String sql) { + try { + int i = statement.executeUpdate(sql); + return i; + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return 0; + } + + public static void getClose() { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + connection = null; + } + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + statement = null; + } + if (result != null) { + try { + result.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + result = null; + } + } + } + + /** + * 查询sql + * + * @param sql + * @return + */ + public static ArrayList executeQueryList(String sql) { + ArrayList titleNameList = new ArrayList<>(); + ArrayList datalist = new ArrayList(); + try { + result = statement.executeQuery(sql); + int columnCount = result.getMetaData().getColumnCount(); + for (int i = 0; i < columnCount; i++) { + titleNameList.add(result.getMetaData().getColumnLabel((i + 1))); + } + while (result.next()) { + for (String name : titleNameList) { + datalist.add(MapFactory.create().put(name, result.getString(name)).getData()); + } + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return datalist; + } + + +} + diff --git a/src/main/java/com/songshu/mongo/tools/MapFactory.java b/src/main/java/com/songshu/mongo/tools/MapFactory.java new file mode 100644 index 0000000..d5c620b --- /dev/null +++ b/src/main/java/com/songshu/mongo/tools/MapFactory.java @@ -0,0 +1,28 @@ +package com.songshu.mongo.tools; + +import java.util.HashMap; +import java.util.Map; + + +public class MapFactory { + + private Map data = new HashMap(); + private MapFactory() {} + + public static MapFactory create() { + return new MapFactory(); + } + + public static MapFactory create(Object key, Object value) { + return create().put(key, value); + } + + public MapFactory put(Object key, Object value) { + data.put(key, value); + return this; + } + + public Map getData() { + return data; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..e1e7642 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,12 @@ +server.port=8018 +# +#spring.data.mongodb.uri=mongodb://Peony:Peony8228@contract.lichenxuan.top:33300/steedos +# +spring.data.mongodb.uri=mongodb://Peony:Peony8228@192.168.145.52:27017/steedos +#spring.data.mongodb.database=steedos +#spring.data.mongodb.port=33300 +#spring.data.mongodb.username=Peony +#spring.data.mongodb.password=Peony8228 +spring.data.mongodb.repositories.enabled=true +logging.level.org.springframework.data=WARN +logging.level.org.springframework.web = INFO -- libgit2 0.21.2