| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- package com.ydtech.modules.largescreen.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
- import com.ydtech.modules.largescreen.dao.AgreementDataMapper;
- import com.ydtech.modules.largescreen.dao.InvInsuranceCompanySettlementsMapper;
- import com.ydtech.modules.largescreen.model.*;
- import com.ydtech.modules.largescreen.model.query.*;
- import com.ydtech.modules.largescreen.service.IAgreementDataService;
- import com.ydtech.utils.idgen.IdGenerate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.RequestBody;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.YearMonth;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.ChronoUnit;
- import java.util.ArrayList;
- import java.util.List;
- @Service
- public class AgreementDataService implements IAgreementDataService {
- @Autowired
- AgreementDataMapper agreementDataMapper;
- @Autowired
- InvInsuranceCompanySettlementsService invInsuranceCompanySettlementsService;
- @Override
- public List<AgreementData> getCompanySumData(DataQuery dataQuery) {
- return agreementDataMapper.getCompanySumData(dataQuery);
- }
- @Override
- public List<OrderStatusData> getOrderStatusData(DataQuery dataQuery) {
- List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
- List<OrderStatusData> newOrderStatusData = new ArrayList<>();
- orderStatusData.forEach(item -> {
- InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.matchKey(item.getOrderStatusCode());
- if (insOrderStatusEnum != null) {
- item.setOrderStatusName(insOrderStatusEnum.getDesc());
- newOrderStatusData.add(item);
- }
- });
- return newOrderStatusData;
- }
- @Override
- public List<CompanyData> getCompanyOrderStatusData(DataQuery dataQuery) {
- //获取有协议的保险公司
- List<CompanyData> companys = agreementDataMapper.getCompanys();
- companys.forEach(item->{
- dataQuery.setCompanyId(item.getCompanyId());
- List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
- List<OrderStatusData> newOrderStatusData = new ArrayList<>();
- orderStatusData.forEach(item1 -> {
- InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.matchKey(item1.getOrderStatusCode());
- if (insOrderStatusEnum != null) {
- item1.setOrderStatusName(insOrderStatusEnum.getDesc());
- newOrderStatusData.add(item1);
- }
- });
- item.setOrderStatusData(newOrderStatusData);
- });
- return companys;
- }
- @Override
- public List<MapData> getMapData(DataQuery dataQuery) {
- return agreementDataMapper.getMapData(dataQuery);
- }
- @Override
- public Integer getOrderNumber(DataQuery dataQuery) {
- return agreementDataMapper.getOrderNumber(dataQuery);
- }
- /**
- * 获取一周内的数据
- * @return
- */
- @Override
- public List<OrderStatusData> getWeekData() {
- //获取一周内的起始日期
- List<String> weekDate = this.getWeekDate();
- List<OrderStatusData> resultList = new ArrayList<>();
- weekDate.forEach(date -> {
- DataQuery dataQuery = new DataQuery();
- dataQuery.setStartDate(date + " 00:00:00");
- dataQuery.setEndDate(date + " 23:59:59");
- dataQuery.setOrderStatus("3");
- List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
- if(orderStatusData.isEmpty()){
- OrderStatusData orderStatusData1 = new OrderStatusData();
- orderStatusData1.setOrderStatusName("已完成");
- orderStatusData1.setOrderStatusCode("3");
- orderStatusData1.setDate(date);
- orderStatusData.add(orderStatusData1);
- }else{
- orderStatusData.get(0).setDate(date);
- }
- resultList.addAll(orderStatusData);
- });
- return resultList;
- }
- @Override
- public List<OrderStatusData> getMonthData() {
- List<String> monthDate = this.getMonthDate();
- List<OrderStatusData> resultList = new ArrayList<>();
- monthDate.forEach(date -> {
- DataQuery dataQuery = new DataQuery();
- dataQuery.setStartDate(date + " 00:00:00");
- dataQuery.setEndDate(date + " 23:59:59");
- dataQuery.setOrderStatus("3");
- List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
- if(orderStatusData.isEmpty()){
- OrderStatusData orderStatusData1 = new OrderStatusData();
- orderStatusData1.setOrderStatusName("已完成");
- orderStatusData1.setOrderStatusCode("3");
- orderStatusData1.setDate(date);
- orderStatusData.add(orderStatusData1);
- }else{
- orderStatusData.get(0).setDate(date);
- }
- resultList.addAll(orderStatusData);
- });
- return resultList;
- }
- @Override
- public List<OrderStatusData> getYearData() {
- List<String> yearDate = this.getYearDate();
- List<OrderStatusData> resultList = new ArrayList<>();
- yearDate.forEach(date -> {
- DataQuery dataQuery = new DataQuery();
- dataQuery.setStartDate(date + "-01 00:00:00");
- YearMonth yearMonth = YearMonth.parse(date, DateTimeFormatter.ofPattern("yyyy-MM"));
- dataQuery.setEndDate(date + "-" + yearMonth.lengthOfMonth() +" 23:59:59");
- dataQuery.setOrderStatus("3");
- List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
- if(orderStatusData.isEmpty()){
- OrderStatusData orderStatusData1 = new OrderStatusData();
- orderStatusData1.setOrderStatusName("已完成");
- orderStatusData1.setOrderStatusCode("3");
- orderStatusData1.setDate(date);
- orderStatusData.add(orderStatusData1);
- }else{
- orderStatusData.get(0).setDate(date);
- orderStatusData.get(0).setOrderStatusName(date);
- }
- resultList.addAll(orderStatusData);
- });
- return resultList;
- }
- @Override
- public List<CompanyData> getCompanys() {
- List<CompanyData> companys = agreementDataMapper.getCompanys();
- // List<Agreement> agreements = agreementDataMapper.getAgreements();
- // companys.forEach(companyData -> {
- // List<Agreement> agreements1 = new ArrayList<>();
- // agreements.forEach(agreement -> {
- // if(agreement.getCompanyId().equals(companyData.getCompanyId())){
- // agreements1.add(agreement);
- // }
- // });
- // companyData.setAgreementList(agreements1);
- // });
- return companys;
- }
- @Override
- public List<CompanyInfoData> getCompanyDataById(CompanyQuery companyQuery) {
- return agreementDataMapper.getCompanyDataById(companyQuery);
- }
- //获取一周内的日期
- public static List<String> getWeekDate(){
- List<String> list = new ArrayList<>();
- //获取一周内的起始日期
- // 获取当前日期
- LocalDate currentDate = LocalDate.now();
- // 获取前一周的起始日期
- LocalDate oneWeekAgo = currentDate.minusWeeks(1);
- // 包括今天 去除1天
- oneWeekAgo = oneWeekAgo.plusDays(1);
- // 输出前一周每天的起始日期
- for (int i = 0; i < 6; i++) {
- // 获取每天的起始日期时间
- LocalDateTime startOfDay = oneWeekAgo.atStartOfDay();
- list.add(startOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- oneWeekAgo = oneWeekAgo.plusDays(1);
- }
- list.add(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- return list;
- }
- //获取一个月内的日期
- public static List<String> getMonthDate(){
- List<String> list = new ArrayList<>();
- //获取一周内的起始日期
- //获取当前日期
- LocalDate currentDate = LocalDate.now();
- // 获取前一周的起始日期
- LocalDate oneWeekAgo = currentDate.minusMonths(1);
- // 包括今天 去除1天
- oneWeekAgo = oneWeekAgo.plusDays(1);
- // 输出前一周每天的起始日期
- int len = Integer.parseInt(String.valueOf(ChronoUnit.DAYS.between(oneWeekAgo, currentDate)));
- for (int i = 0; i < len; i++) {
- // 获取每天的起始日期时间
- LocalDateTime startOfDay = oneWeekAgo.atStartOfDay();
- list.add(startOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- oneWeekAgo = oneWeekAgo.plusDays(1);
- }
- list.add(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- return list;
- }
- //获取一年内的日期
- public static List<String> getYearDate(){
- List<String> list = new ArrayList<>();
- //获取一周内的起始日期
- //获取当前日期
- LocalDate currentDate = LocalDate.now();
- // 获取前一周的起始日期
- LocalDate oneWeekAgo = currentDate.minusYears(1);
- // 包括今天 去除1天
- oneWeekAgo = oneWeekAgo.plusDays(1);
- // 输出前一周每天的起始日期
- int len = Integer.parseInt(String.valueOf(ChronoUnit.MONTHS.between(oneWeekAgo, currentDate)));
- for (int i = 0; i < len; i++) {
- // 获取每天的起始日期时间
- oneWeekAgo = oneWeekAgo.plusMonths(1);
- LocalDateTime startOfDay = oneWeekAgo.atStartOfDay();
- list.add(startOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM")));
- }
- list.add(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM")));
- return list;
- }
- public List<InsuranceCompanyBusinessSituation> insuranceCompanyBusinessSituation(InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery) {
- LocalDateTime currentDateTime = LocalDateTime.now();
- String dateFormat = "yyyy-dd-MM";
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat);
- if(insuranceCompanyBusinessSituationQuery.getSignStartTime() == null || "".equals(insuranceCompanyBusinessSituationQuery.getSignStartTime())){
- insuranceCompanyBusinessSituationQuery.setSignStartTime(currentDateTime.format(formatter) + " 00:00:00");
- }
- if(insuranceCompanyBusinessSituationQuery.getSignEndTime() == null || "".equals(insuranceCompanyBusinessSituationQuery.getSignEndTime())){
- insuranceCompanyBusinessSituationQuery.setSignEndTime(currentDateTime.format(formatter) + " 23:59:59");
- }
- return agreementDataMapper.insuranceCompanyBusinessSituation(insuranceCompanyBusinessSituationQuery);
- }
- @Override
- public List<InsuranceCompanyBusinessSituation> channelBusinessSituation(InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery) {
- LocalDateTime currentDateTime = LocalDateTime.now();
- String dateFormat = "yyyy-dd-MM";
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat);
- if(insuranceCompanyBusinessSituationQuery.getSignStartTime() == null || "".equals(insuranceCompanyBusinessSituationQuery.getSignStartTime())){
- insuranceCompanyBusinessSituationQuery.setSignStartTime(currentDateTime.format(formatter) + " 00:00:00");
- }
- if(insuranceCompanyBusinessSituationQuery.getSignEndTime() == null || "".equals(insuranceCompanyBusinessSituationQuery.getSignEndTime())){
- insuranceCompanyBusinessSituationQuery.setSignEndTime(currentDateTime.format(formatter) + " 23:59:59");
- }
- return agreementDataMapper.channelBusinessSituation(insuranceCompanyBusinessSituationQuery);
- }
- @Override
- public List<ChannelSettlements> channelSettlement(ChannelSettlementsQuery channelSettlementsQuery) {
- List<ChannelSettlements> channelSettlements = agreementDataMapper.channelSettlement(channelSettlementsQuery);
- return channelSettlements;
- }
- @Override
- @Transactional
- public List<InvInsuranceCompanySettlements> insuranceCompanySettlement(InvInsuranceCompanySettlementsQuery invInsuranceCompanySettlementsQuery) {
- if(invInsuranceCompanySettlementsQuery.getDate() == null || invInsuranceCompanySettlementsQuery.getDate() == ""){
- invInsuranceCompanySettlementsQuery.setDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM")));
- }
- YearMonth yearMonth = YearMonth.parse(invInsuranceCompanySettlementsQuery.getDate());
- LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
- invInsuranceCompanySettlementsQuery.setStartTime(invInsuranceCompanySettlementsQuery.getDate() + "-01");
- invInsuranceCompanySettlementsQuery.setEndTime(lastDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- List<InvInsuranceCompanySettlements> totalReceivableAmount = agreementDataMapper.getTotalReceivableAmount(invInsuranceCompanySettlementsQuery);
- InvInsuranceCompanySettlements invInsuranceCompanySettlements = new InvInsuranceCompanySettlements();
- invInsuranceCompanySettlements.setDate(invInsuranceCompanySettlementsQuery.getDate());
- invInsuranceCompanySettlements.setInsuranceId(invInsuranceCompanySettlementsQuery.getInsuranceId());
- invInsuranceCompanySettlements.setInsuranceDept(invInsuranceCompanySettlementsQuery.getInsuranceDept());
- List<InvInsuranceCompanySettlements> exist = invInsuranceCompanySettlementsService.isExist(invInsuranceCompanySettlements);
- //将总数放到invInsuranceCompanySettlements 表中
- totalReceivableAmount.forEach(amount->{
- amount.setDate(invInsuranceCompanySettlementsQuery.getDate());
- long count = exist.stream().filter(x -> x.getInsuranceId().equals(amount.getInsuranceId()) && x.getInsuranceDept().equals(amount.getInsuranceDept()) && x.getDate().equals(amount.getDate())).count();
- if(count > 0){
- InvInsuranceCompanySettlements invInsuranceCompanySettlement = exist.stream().filter(x -> x.getInsuranceId().equals(amount.getInsuranceId()) && x.getInsuranceDept().equals(amount.getInsuranceDept()) && x.getDate().equals(amount.getDate())).findFirst().get();
- invInsuranceCompanySettlement.setAmountReceivable(amount.getAmountReceivable());
- invInsuranceCompanySettlementsService.updateById(invInsuranceCompanySettlement);
- }else{
- amount.setId(IdGenerate.nextId());
- invInsuranceCompanySettlementsService.save(amount);
- }
- });
- //从 invInsuranceCompanySettlements 中查询数据
- LambdaQueryWrapper<InvInsuranceCompanySettlements> queryWrapper = new LambdaQueryWrapper<InvInsuranceCompanySettlements>();
- if(invInsuranceCompanySettlementsQuery.getInsuranceId() != null && invInsuranceCompanySettlementsQuery.getInsuranceId() != ""){
- queryWrapper.eq(InvInsuranceCompanySettlements::getInsuranceId,invInsuranceCompanySettlementsQuery.getInsuranceId());
- }
- if(invInsuranceCompanySettlementsQuery.getInsuranceDept() != null && invInsuranceCompanySettlementsQuery.getInsuranceDept() != ""){
- queryWrapper.eq(InvInsuranceCompanySettlements::getInsuranceDept,invInsuranceCompanySettlementsQuery.getInsuranceDept());
- }
- if(invInsuranceCompanySettlementsQuery.getDate() != null && invInsuranceCompanySettlementsQuery.getDate() != ""){
- queryWrapper.eq(InvInsuranceCompanySettlements::getDate,invInsuranceCompanySettlementsQuery.getDate());
- }
- List<InvInsuranceCompanySettlements> list = invInsuranceCompanySettlementsService.list(queryWrapper);
- return list;
- }
- @Override
- public boolean updateInsuranceCompanySettlement(InvInsuranceCompanySettlements invInsuranceCompanySettlements) {
- invInsuranceCompanySettlements.setAmountsOutstanding(invInsuranceCompanySettlements.getReconciliationOfAmountsDue().subtract(invInsuranceCompanySettlements.getAmountReceived()));
- return invInsuranceCompanySettlementsService.updateById(invInsuranceCompanySettlements);
- }
- }
|