帆软:定时任务使用pageHelper分页、修改认证状态刷新逻辑、添加销项税客户取值

release
路明慧 2 years ago
parent 1e447f9c74
commit a6b3bd848b
  1. 62
      dxhy-core/src/main/java/com/dxhy/core/controller/FrDataProcessController.java
  2. 8
      dxhy-core/src/main/java/com/dxhy/core/dao/frTask/QueryDetailDataDao.java
  3. 9
      dxhy-core/src/main/java/com/dxhy/core/dao/frTask/RecordToQueryDao.java
  4. 27
      dxhy-core/src/main/java/com/dxhy/core/entity/frJob/FrRequestDto.java
  5. 15
      dxhy-core/src/main/java/com/dxhy/core/service/frJob/QueryDetailDataService.java
  6. 231
      dxhy-core/src/main/java/com/dxhy/core/service/frJob/QueryDetailDataServiceImpl.java
  7. 17
      dxhy-core/src/main/java/com/dxhy/core/service/frJob/RecordToQueryService.java
  8. 641
      dxhy-core/src/main/java/com/dxhy/core/service/frJob/RecordToQueryServiceImpl.java
  9. 2
      dxhy-core/src/main/java/com/dxhy/core/task/FrDataTask.java
  10. 159
      dxhy-core/src/main/resources/mapper/frJob/QueryDetailDataDao.xml
  11. 145
      dxhy-core/src/main/resources/mapper/frJob/RecordToQueryDao.xml

@ -0,0 +1,62 @@
package com.dxhy.core.controller;
import com.dxhy.auth.client.annotation.IgnoreClientToken;
import com.dxhy.common.utils.R;
import com.dxhy.core.entity.frJob.FrRequestDto;
import com.dxhy.core.service.frJob.RecordToQueryService;
import com.rabbitmq.client.Return;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@Slf4j
@RestController
@RequestMapping("/frData")
public class FrDataProcessController {
@Resource
private RecordToQueryService recordToQueryService;
@ResponseBody
@IgnoreClientToken
@PostMapping("/dataProcess")
public R dataProcess(@RequestBody FrRequestDto requestParam) {
if (requestParam == null || StringUtils.isBlank(requestParam.getProcessType())){
return R.error("请求参数不能为空");
}
R r = R.ok();
switch (requestParam.getProcessType()) {
case "1":
r = recordToQueryService.processJxDataByBzdh(requestParam);
break;
case "2":
r = recordToQueryService.processJxDataByTime(requestParam);
break;
case "3":
r = recordToQueryService.processXxDataByBzdh(requestParam);
break;
case "4":
r = recordToQueryService.processXxDataByTime(requestParam);
break;
case "5":
r = recordToQueryService.processZyDataByBzdh(requestParam);
break;
case "6":
r = recordToQueryService.processZyDataByTime(requestParam);
break;
case "7":
r = recordToQueryService.refreshAuthStatus(requestParam);
break;
default:
r = R.error("请求参数错误");
break;
}
return r;
}
}

@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Mapper
public interface QueryDetailDataDao extends BaseMapper<VoucherRecordQueryDetail> {
@ -31,4 +32,11 @@ public interface QueryDetailDataDao extends BaseMapper<VoucherRecordQueryDetail>
void saveOrUpdate(List<VoucherRecordQueryDetail> dataFromRecordItems);
List<String> getUuidByRzzt();
List<VoucherRecordQueryDetail> getFrDataFromRecord(Map<String, String> param);
List<VoucherRecordQueryDetail> getZyDataFromRecord(Map<String, String> param);
List<VoucherRecordQueryDetail> getFrDataFromRecordXx(Map<String, String> param);
}

@ -8,7 +8,9 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Mapper
public interface RecordToQueryDao extends BaseMapper<VoucherRecordQuery> {
@ -38,4 +40,11 @@ public interface RecordToQueryDao extends BaseMapper<VoucherRecordQuery> {
void insertOrUpdate(List<VoucherRecordQuery> voucherRecordQuerys);
List<String> getRzzt(@Param("uuids") List<String> uuids);
List<String> getCxRzzt();
List<VoucherRecordQuery> getDataFromRecord(Map<String, String> param);
List<VoucherRecordQuery> getDataFromRecordZy(Map<String, String> param);
List<VoucherRecordQuery> getXxDataFromRecord(Map<String, String> param);
}

@ -0,0 +1,27 @@
package com.dxhy.core.entity.frJob;
import lombok.Data;
@Data
public class FrRequestDto {
/**
* 处理类型 1 按照报账单号刷新进项税数据 2 按照日期刷新进项税数据 3 刷新认证状态
*/
private String processType;
/**
* 报账单号
*/
private String badh;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
}

@ -7,20 +7,29 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.dxhy.core.entity.frJob.VoucherRecordQueryDetail;
import java.util.List;
import java.util.Map;
public interface QueryDetailDataService extends IService<VoucherRecordQueryDetail> {
//插入进项数据
void insertJxDataToQueryDetail();
void insertJxDataToQueryDetail(int pageSize);
//插入销项数据
void insertXxDataToQueryDetail();
void insertXxDataToQueryDetail(int pageSize);
//插入主营业务收入数据
void insertZyDataToQueryDetail();
void insertZyDataToQueryDetail(int pageSize);
String[] getTime(String km);
List<String> getRzztDetail();
void updateRzzt(List<String> rzDetail);
void insertJxDataToQuery(Map<String, String> param);
void insertZyDataToQuery(Map<String, String> param);
void insertXxDataToQuery(Map<String, String> param);
void updateCxRzzt(List<String> cxRzzt);
}

@ -7,6 +7,8 @@ import com.dxhy.core.dao.frTask.QueryDetailDataDao;
import com.dxhy.core.enmu.FplxEnmu;
import com.dxhy.core.entity.frJob.VoucherRecordQuery;
import com.dxhy.core.entity.frJob.VoucherRecordQueryDetail;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -14,6 +16,7 @@ import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service("queryDetailDataService")
@ -31,87 +34,95 @@ public class QueryDetailDataServiceImpl extends ServiceImpl<QueryDetailDataDao,
@Override
public void insertJxDataToQueryDetail(){
public void insertJxDataToQueryDetail(int pageSize){
String[] time = getTime(JXZZS);
//2.按照时间查询增量数据
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getDataFromRecord(time[0], time[1],JXZZS);
//3.添加发票类型
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0){
dataFromRecordItems.stream().forEach(e->e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
if (dataFromRecordItems.size()>5000){
int count = dataFromRecordItems.size()%5000==0?dataFromRecordItems.size()/5000:dataFromRecordItems.size()/5000+1;
for (int i = 0; i < count; i++) {
int start = i*5000;
int end = (i+1)*5000;
if (i == count-1){
end = dataFromRecordItems.size();
}
List<VoucherRecordQueryDetail> subList = dataFromRecordItems.subList(start,end);
queryDetailDataDao.saveOrUpdate(subList);
}
}else {
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext){
PageHelper.startPage(pageNum,pageSize);
//2.按照时间查询增量数据
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getDataFromRecord(time[0], time[1],JXZZS);
//3.添加发票类型
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0){
dataFromRecordItems.stream().forEach(e->e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
queryDetailDataDao.saveOrUpdate(dataFromRecordItems);
}
PageInfo<VoucherRecordQueryDetail> pageInfo = new PageInfo<>(dataFromRecordItems);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
}
}
@Override
public void insertXxDataToQueryDetail(){
public void insertXxDataToQueryDetail(int pageSize){
String[] time = getTime(XXZZS);
//2.按照时间查询增量数据
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getDataFromRecordXx(time[0], time[1],XXZZS);
//3.添加发票类型
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0){
dataFromRecordItems.stream().forEach(e->e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
if (dataFromRecordItems.size()>5000){
int count = dataFromRecordItems.size()%5000==0?dataFromRecordItems.size()/5000:dataFromRecordItems.size()/5000+1;
for (int i = 0; i < count; i++) {
int start = i*5000;
int end = (i+1)*5000;
if (i == count-1){
end = dataFromRecordItems.size();
}
List<VoucherRecordQueryDetail> subList = dataFromRecordItems.subList(start,end);
queryDetailDataDao.saveOrUpdate(subList);
}
}else {
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext){
PageHelper.startPage(pageNum,pageSize);
//2.按照时间查询增量数据
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getDataFromRecordXx(time[0], time[1],XXZZS);
//3.添加发票类型
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0){
dataFromRecordItems.stream().forEach(e->e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
queryDetailDataDao.saveOrUpdate(dataFromRecordItems);
PageInfo<VoucherRecordQueryDetail> pageInfo = new PageInfo<>(dataFromRecordItems);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
}
}
@Override
public void insertZyDataToQueryDetail(){
public void insertZyDataToQueryDetail(int pageSize){
String[] time = getTime(ZYYWSR);
//2.按照时间查询增量数据
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getDataFromRecordJe(time[0], time[1],ZYYWSR);
//3添加发票类型
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0){
dataFromRecordItems.stream().forEach(e->e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
if (dataFromRecordItems.size()>5000){
int count = dataFromRecordItems.size()%5000==0?dataFromRecordItems.size()/5000:dataFromRecordItems.size()/5000+1;
for (int i = 0; i < count; i++) {
int start = i*5000;
int end = (i+1)*5000;
if (i == count-1){
end = dataFromRecordItems.size();
}
List<VoucherRecordQueryDetail> subList = dataFromRecordItems.subList(start,end);
queryDetailDataDao.saveOrUpdate(subList);
}
}else {
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext){
PageHelper.startPage(pageNum,pageSize);
//2.按照时间查询增量数据
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getDataFromRecordJe(time[0], time[1],ZYYWSR);
//3添加发票类型
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0){
dataFromRecordItems.stream().forEach(e->e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
queryDetailDataDao.saveOrUpdate(dataFromRecordItems);
PageInfo<VoucherRecordQueryDetail> pageInfo = new PageInfo<>(dataFromRecordItems);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
}
}
@Override
@ -141,13 +152,7 @@ public class QueryDetailDataServiceImpl extends ServiceImpl<QueryDetailDataDao,
@Override
public List<String> getRzztDetail() {
LambdaQueryWrapper<VoucherRecordQueryDetail> querywrapper = new LambdaQueryWrapper<>();
querywrapper.select(VoucherRecordQueryDetail::getUuid);
querywrapper.eq(VoucherRecordQueryDetail::getRzzt,"0");
querywrapper.likeRight(VoucherRecordQueryDetail::getKjkmbh,JXZZS);
return this.list(querywrapper).stream().map(e -> e.getUuid()).distinct().collect(Collectors.toList());
return queryDetailDataDao.getUuidByRzzt();
}
@Override
@ -159,4 +164,96 @@ public class QueryDetailDataServiceImpl extends ServiceImpl<QueryDetailDataDao,
this.update(updateWrap);
}
}
@Override
public void insertJxDataToQuery(Map<String, String> param) {
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, 2000);
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getFrDataFromRecord(param);
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0) {
dataFromRecordItems.stream().forEach(e -> e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
queryDetailDataDao.saveOrUpdate(dataFromRecordItems);
PageInfo<VoucherRecordQueryDetail> pageInfo = new PageInfo<>(dataFromRecordItems);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
}
}
@Override
public void insertZyDataToQuery(Map<String, String> param) {
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, 2000);
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getZyDataFromRecord(param);
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0) {
dataFromRecordItems.stream().forEach(e -> e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
queryDetailDataDao.saveOrUpdate(dataFromRecordItems);
PageInfo<VoucherRecordQueryDetail> pageInfo = new PageInfo<>(dataFromRecordItems);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
}
}
@Override
public void insertXxDataToQuery(Map<String, String> param) {
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, 2000);
List<VoucherRecordQueryDetail> dataFromRecordItems = queryDetailDataDao.getFrDataFromRecordXx(param);
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0) {
dataFromRecordItems.stream().forEach(e -> e.setFplxmc(FplxEnmu.getFplxMap().get(e.getFplx())));
//4.添加入库
queryDetailDataDao.saveOrUpdate(dataFromRecordItems);
PageInfo<VoucherRecordQueryDetail> pageInfo = new PageInfo<>(dataFromRecordItems);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
}
}
@Override
public void updateCxRzzt(List<String> cxRzzt) {
if (cxRzzt!= null && cxRzzt.size() > 0){
LambdaUpdateWrapper<VoucherRecordQueryDetail> updateWrap = new LambdaUpdateWrapper();
updateWrap.in(VoucherRecordQueryDetail::getUuid,cxRzzt);
updateWrap.set(VoucherRecordQueryDetail::getRzzt,"0");
this.update(updateWrap);
}
}
}

@ -2,10 +2,25 @@ package com.dxhy.core.service.frJob;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dxhy.common.utils.R;
import com.dxhy.core.entity.frJob.FrRequestDto;
import com.dxhy.core.entity.frJob.VoucherRecordQuery;
public interface RecordToQueryService extends IService<VoucherRecordQuery> {
void getDataForFr();
void getDataForFr(String param);
R processJxDataByBzdh(FrRequestDto requestDto);
R processJxDataByTime(FrRequestDto requestParam);
R refreshAuthStatus(FrRequestDto requestParam);
R processZyDataByTime(FrRequestDto requestParam);
R processZyDataByBzdh(FrRequestDto requestParam);
R processXxDataByTime(FrRequestDto requestParam);
R processXxDataByBzdh(FrRequestDto requestParam);
}

@ -2,22 +2,26 @@ package com.dxhy.core.service.frJob;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dxhy.common.utils.R;
import com.dxhy.core.dao.frTask.RecordToQueryDao;
import com.dxhy.common.enums.KjkmTaxEnmu;
import com.dxhy.core.entity.frJob.FpTaxAmount;
import com.dxhy.core.entity.frJob.FrRequestDto;
import com.dxhy.core.entity.frJob.VoucherRecordQuery;
import com.dxhy.core.entity.frJob.VoucherRecordQueryDetail;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Service("recordToQueryService")
@Slf4j
public class RecordToQueryServiceImpl extends ServiceImpl<RecordToQueryDao, VoucherRecordQuery> implements RecordToQueryService {
@Resource
@ -35,16 +39,19 @@ public class RecordToQueryServiceImpl extends ServiceImpl<RecordToQueryDao, Vouc
private final String JXSZC = "2221010900";
//分页大小
private int pageSize = 5000;
@Override
public void getDataForFr() {
public void getDataForFr(String param) {
pageSize = stringToInt(param);
//开始插入主数据信息
try {
boolean flag1 = this.insertJxDataToQuery();
if (flag1){
queryDetailDataService.insertJxDataToQueryDetail();
queryDetailDataService.insertJxDataToQueryDetail(pageSize);
}
}catch (Exception e) {
log.error("帆软进项增值税数据获取异常",e);
@ -53,7 +60,7 @@ public class RecordToQueryServiceImpl extends ServiceImpl<RecordToQueryDao, Vouc
try {
boolean flag2 = this.insertXxDataToQuery();
if (flag2){
queryDetailDataService.insertXxDataToQueryDetail();
queryDetailDataService.insertXxDataToQueryDetail(pageSize);
}
}catch (Exception e) {
log.error("帆软销项增值税数据获取异常",e);
@ -62,7 +69,7 @@ public class RecordToQueryServiceImpl extends ServiceImpl<RecordToQueryDao, Vouc
try {
boolean flag3 = this.insertZyDataToQuery();
if (flag3){
queryDetailDataService.insertZyDataToQueryDetail();
queryDetailDataService.insertZyDataToQueryDetail(pageSize);
}
}catch (Exception e) {
log.error("帆软主营业务收入数据获取异常",e);
@ -70,179 +77,156 @@ public class RecordToQueryServiceImpl extends ServiceImpl<RecordToQueryDao, Vouc
this.insertOutDataToQuery();
//更新发票认证状态
List<String> uuids = queryDetailDataService.getRzztDetail();
if (uuids != null && uuids.size() > 0){
if (uuids.size() > 5000){
int count = uuids.size()%5000==0?uuids.size()/5000:uuids.size()/5000+1;
for (int i = 0; i < count; i++) {
int start = i*5000;
int end = (i+1)*5000;
if (i == count-1){
end = uuids.size();
}
List<String> subList = uuids.subList(start,end);
queryDetailDataService.updateRzzt(subList);
}
}else {
List<String> rzztList = recordToQueryDao.getRzzt(uuids);
if (rzztList != null && rzztList.size() > 0){
queryDetailDataService.updateRzzt(rzztList);
}
}
}
updateRzStatus();
}
public boolean insertJxDataToQuery() {
boolean flag = false;
boolean flag = true;
//1.获取时间
String[] time = getTime(JXZZS);
//2.查询数据
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getDataFromRecordItems(time[0], time[1],JXZZS);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0){
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
voucherRecordQuerys.forEach(v->v.setSl(taxMap.get(v.getKjkmbh())));
//5.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size()>0){
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
voucherRecordQuerys.forEach(v->v.setFpse(amountMap.get(v.getSl()+v.getBzdh())==null?"0":amountMap.get(v.getSl()+v.getBzdh())));
}
//8.保存或更新
if (voucherRecordQuerys.size()>5000){
int count = voucherRecordQuerys.size()%5000==0?voucherRecordQuerys.size()/5000:voucherRecordQuerys.size()/5000+1;
for (int i = 0; i < count; i++) {
int start = i*5000;
int end = (i+1)*5000;
if (i == count-1){
end = voucherRecordQuerys.size();
}
List<VoucherRecordQuery> subList = voucherRecordQuerys.subList(start,end);
recordToQueryDao.insertOrUpdate(subList);
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext){
PageHelper.startPage(pageNum, pageSize);
//2.查询数据
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getDataFromRecordItems(time[0], time[1],JXZZS);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0){
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
voucherRecordQuerys.forEach(v->v.setSl(taxMap.get(v.getKjkmbh())));
//5.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size()>0){
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
voucherRecordQuerys.forEach(v->v.setFpse(amountMap.get(v.getSl()+v.getBzdh())==null?"0":amountMap.get(v.getSl()+v.getBzdh())));
}
}else {
//8.保存或更新
recordToQueryDao.insertOrUpdate(voucherRecordQuerys);
PageInfo<VoucherRecordQuery> pageInfo = new PageInfo<>(voucherRecordQuerys);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
flag = true;
}
return flag;
}
public boolean insertXxDataToQuery() {
boolean flag = false;
boolean flag = true;
//1.获取时间
String[] time = getTime(XXZZS);
//2.查询数据
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getDataXFromRecordItems(time[0],time[1],XXZZS);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0) {
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
voucherRecordQuerys.forEach(v -> {
v.setSl(taxMap.get(v.getKjkmbh()));
});
//5.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getXTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size() > 0) {
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
voucherRecordQuerys.forEach(v -> v.setFpse(amountMap.get(v.getSl() + v.getBzdh()) == null ? "0" : amountMap.get(v.getSl() + v.getBzdh())));
}
//8.保存或更新
if (voucherRecordQuerys.size()>5000){
int count = voucherRecordQuerys.size()%5000==0?voucherRecordQuerys.size()/5000:voucherRecordQuerys.size()/5000+1;
for (int i = 0; i < count; i++) {
int start = i*5000;
int end = (i+1)*5000;
if (i == count-1){
end = voucherRecordQuerys.size();
}
List<VoucherRecordQuery> subList = voucherRecordQuerys.subList(start,end);
recordToQueryDao.insertOrUpdate(subList);
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, pageSize);
//2.查询数据
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getDataXFromRecordItems(time[0],time[1],XXZZS);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0) {
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
voucherRecordQuerys.forEach(v -> {
v.setSl(taxMap.get(v.getKjkmbh()));
});
//5.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getXTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size() > 0) {
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
voucherRecordQuerys.forEach(v -> v.setFpse(amountMap.get(v.getSl() + v.getBzdh()) == null ? "0" : amountMap.get(v.getSl() + v.getBzdh())));
}
}else {
//8.保存或更新
recordToQueryDao.insertOrUpdate(voucherRecordQuerys);
PageInfo<VoucherRecordQuery> pageInfo = new PageInfo<>(voucherRecordQuerys);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
flag = true;
}
return flag;
}
public boolean insertZyDataToQuery() {
boolean flag = false;
boolean flag = true;
//1.获取时间
String[] time = getTime(ZYYWSR);
//2.查询数据
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getDataZFromRecordItems(time[0],time[1],ZYYWSR);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0) {
//3.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//4.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getZTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size() > 0) {
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpje));
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, pageSize);
//2.查询数据
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getDataZFromRecordItems(time[0],time[1],ZYYWSR);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0) {
//3.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//4.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getZTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size() > 0) {
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpje));
//5.添加税率
voucherRecordQuerys.forEach(v -> v.setFpse(amountMap.get(v.getSl() + v.getBzdh()) == null ? "0" : amountMap.get(v.getSl() + v.getBzdh())));
}
//5.添加税率
voucherRecordQuerys.forEach(v -> v.setFpse(amountMap.get(v.getSl() + v.getBzdh()) == null ? "0" : amountMap.get(v.getSl() + v.getBzdh())));
}
//6.保存或更新
recordToQueryDao.insertOrUpdate(voucherRecordQuerys);
//6.保存或更新
if (voucherRecordQuerys.size()>5000){
int count = voucherRecordQuerys.size()%5000==0?voucherRecordQuerys.size()/5000:voucherRecordQuerys.size()/5000+1;
for (int i = 0; i < count; i++) {
int start = i*5000;
int end = (i+1)*5000;
if (i == count-1){
end = voucherRecordQuerys.size();
}
List<VoucherRecordQuery> subList = voucherRecordQuerys.subList(start,end);
recordToQueryDao.insertOrUpdate(subList);
}
PageInfo<VoucherRecordQuery> pageInfo = new PageInfo<>(voucherRecordQuerys);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
recordToQueryDao.insertOrUpdate(voucherRecordQuerys);
hasNext = false;
}
flag = true;
}
return flag;
}
@ -250,26 +234,25 @@ public class RecordToQueryServiceImpl extends ServiceImpl<RecordToQueryDao, Vouc
public void insertOutDataToQuery() {
//获取时间
String[] time = this.getTime(JXSZC);
//查询数据
List<VoucherRecordQuery> dataFromRecordItems = recordToQueryDao.getDataFromRecordItems(time[0], time[1], JXSZC);
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0){
if (dataFromRecordItems.size()>5000){
int count = dataFromRecordItems.size()%5000==0?dataFromRecordItems.size()/5000:dataFromRecordItems.size()/5000+1;
for (int i = 0; i < count; i++) {
int start = i*5000;
int end = (i+1)*5000;
if (i == count-1){
end = dataFromRecordItems.size();
}
List<VoucherRecordQuery> subList = dataFromRecordItems.subList(start,end);
recordToQueryDao.insertOrUpdate(subList);
}
}else {
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, pageSize);
//查询数据
List<VoucherRecordQuery> dataFromRecordItems = recordToQueryDao.getDataFromRecordItems(time[0], time[1], JXSZC);
if (dataFromRecordItems != null && dataFromRecordItems.size() != 0){
recordToQueryDao.insertOrUpdate(dataFromRecordItems);
PageInfo<VoucherRecordQuery> pageInfo = new PageInfo<>(dataFromRecordItems);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
}
}
@ -299,4 +282,338 @@ public class RecordToQueryServiceImpl extends ServiceImpl<RecordToQueryDao, Vouc
return time;
}
public void updateRzStatus() {
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
List<List<String>> result = new ArrayList<>();
while (hasNext){
PageHelper.startPage(pageNum, pageSize);
List<String> uuids = queryDetailDataService.getRzztDetail();
if (uuids != null && uuids.size() > 0){
List<String> rzztList = recordToQueryDao.getRzzt(uuids);
if (rzztList != null && rzztList.size() > 0) {
result.add(rzztList);
}
PageInfo<String> pageInfo = new PageInfo<>(uuids);
hasNext = pageInfo.isHasNextPage();
pageNum++;
}else {
hasNext = false;
}
}
if (result != null && !result.isEmpty()){
for (List<String> uuids : result) {
queryDetailDataService.updateRzzt(uuids);
}
}
List<String> cxRzzt = recordToQueryDao.getCxRzzt();
if (cxRzzt != null && cxRzzt.size() > 0){
queryDetailDataService.updateCxRzzt(cxRzzt);
}
}
public int stringToInt(String param) {
int count = pageSize;
try {
count = Integer.parseInt(param);
}catch (Exception e){
log.error("分页大小转换失败,传入参数为{}",param);
}
return count;
}
@Override
public R refreshAuthStatus(FrRequestDto requestParam) {
this.updateRzStatus();
return R.ok();
}
@Override
public R processJxDataByBzdh(FrRequestDto requestDto) {
if (requestDto != null && StringUtils.isNotBlank(requestDto.getBadh())){
Map<String,String> param = new HashMap<>();
param.put("bzdh",requestDto.getBadh());
param.put("kjkmbh",JXZZS);
List<VoucherRecordQuery> dataFromRecord = recordToQueryDao.getDataFromRecord(param);
if (dataFromRecord != null && dataFromRecord.size() > 0){
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
dataFromRecord.forEach(v->v.setSl(taxMap.get(v.getKjkmbh())));
//5.报账单号去重
List<String> bzdhs
= dataFromRecord.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size()>0){
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
dataFromRecord.forEach(v->v.setFpse(amountMap.get(v.getSl()+v.getBzdh())==null?"0":amountMap.get(v.getSl()+v.getBzdh())));
}
//8.保存或更新
recordToQueryDao.insertOrUpdate(dataFromRecord);
}
queryDetailDataService.insertJxDataToQuery(param);
return R.ok();
}
return R.error("报账单号不能为空");
}
@Override
public R processJxDataByTime(FrRequestDto requestDto) {
if (requestDto != null && StringUtils.isNotBlank(requestDto.getStartTime()) && StringUtils.isNotBlank(requestDto.getEndTime())){
Map<String,String> param = new HashMap<>();
param.put("startTime",requestDto.getStartTime());
param.put("endTime",requestDto.getEndTime());
param.put("kjkmbh",JXZZS);
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, pageSize);
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getDataFromRecord(param);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0) {
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
voucherRecordQuerys.forEach(v -> v.setSl(taxMap.get(v.getKjkmbh())));
//5.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size() > 0) {
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
voucherRecordQuerys.forEach(v -> v.setFpse(amountMap.get(v.getSl() + v.getBzdh()) == null ? "0" : amountMap.get(v.getSl() + v.getBzdh())));
}
//8.保存或更新
recordToQueryDao.insertOrUpdate(voucherRecordQuerys);
PageInfo<VoucherRecordQuery> pageInfo = new PageInfo<>(voucherRecordQuerys);
hasNext = pageInfo.isHasNextPage();
pageNum++;
} else {
hasNext = false;
}
}
queryDetailDataService.insertJxDataToQuery(param);
return R.ok();
}
return R.error("开始时间或者结束时间不能为空");
}
@Override
public R processZyDataByTime(FrRequestDto requestParam) {
if (requestParam != null && StringUtils.isNotBlank(requestParam.getStartTime()) && StringUtils.isNotBlank(requestParam.getEndTime())){
Map<String,String> param = new HashMap<>();
param.put("startTime",requestParam.getStartTime());
param.put("endTime",requestParam.getEndTime());
param.put("kjkmbh",ZYYWSR);
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, pageSize);
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getDataFromRecordZy(param);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0) {
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
voucherRecordQuerys.forEach(v -> v.setSl(taxMap.get(v.getKjkmbh())));
//5.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getZTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size() > 0) {
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
voucherRecordQuerys.forEach(v -> v.setFpse(amountMap.get(v.getSl() + v.getBzdh()) == null ? "0" : amountMap.get(v.getSl() + v.getBzdh())));
}
//8.保存或更新
recordToQueryDao.insertOrUpdate(voucherRecordQuerys);
PageInfo<VoucherRecordQuery> pageInfo = new PageInfo<>(voucherRecordQuerys);
hasNext = pageInfo.isHasNextPage();
pageNum++;
} else {
hasNext = false;
}
}
queryDetailDataService.insertZyDataToQuery(param);
return R.ok();
}
return R.error("开始时间或者结束时间不能为空");
}
@Override
public R processZyDataByBzdh(FrRequestDto requestParam) {
if (requestParam != null && StringUtils.isNotBlank(requestParam.getBadh())){
Map<String,String> param = new HashMap<>();
param.put("bzdh",requestParam.getBadh());
param.put("kjkmbh",ZYYWSR);
List<VoucherRecordQuery> dataFromRecord = recordToQueryDao.getDataFromRecord(param);
if (dataFromRecord != null && dataFromRecord.size() > 0){
//报账单号去重
List<String> bzdhs
= dataFromRecord.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getZTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size()>0){
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//添加税率
dataFromRecord.forEach(v->v.setFpse(amountMap.get(v.getSl()+v.getBzdh())==null?"0":amountMap.get(v.getSl()+v.getBzdh())));
}
//保存或更新
recordToQueryDao.insertOrUpdate(dataFromRecord);
}
queryDetailDataService.insertZyDataToQuery(param);
return R.ok();
}
return R.error("报账单号不能为空");
}
@Override
public R processXxDataByTime(FrRequestDto requestParam) {
if (requestParam != null && StringUtils.isNotBlank(requestParam.getStartTime()) && StringUtils.isNotBlank(requestParam.getEndTime())){
Map<String,String> param = new HashMap<>();
param.put("startTime",requestParam.getStartTime());
param.put("endTime",requestParam.getEndTime());
param.put("kjkmbh",XXZZS);
//是否继续循环
boolean hasNext = true;
//页数
int pageNum = 1;
while (hasNext) {
PageHelper.startPage(pageNum, pageSize);
List<VoucherRecordQuery> voucherRecordQuerys =
recordToQueryDao.getXxDataFromRecord(param);
if (voucherRecordQuerys != null && voucherRecordQuerys.size() > 0) {
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
voucherRecordQuerys.forEach(v -> v.setSl(taxMap.get(v.getKjkmbh())));
//5.报账单号去重
List<String> bzdhs
= voucherRecordQuerys.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getXTaxAmount(bzdhs);
if (taxAmounts != null && taxAmounts.size() > 0) {
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
voucherRecordQuerys.forEach(v -> v.setFpse(amountMap.get(v.getSl() + v.getBzdh()) == null ? "0" : amountMap.get(v.getSl() + v.getBzdh())));
}
//8.保存或更新
recordToQueryDao.insertOrUpdate(voucherRecordQuerys);
PageInfo<VoucherRecordQuery> pageInfo = new PageInfo<>(voucherRecordQuerys);
hasNext = pageInfo.isHasNextPage();
pageNum++;
} else {
hasNext = false;
}
}
queryDetailDataService.insertXxDataToQuery(param);
return R.ok();
}
return R.error("开始时间或者结束时间不能为空");
}
@Override
public R processXxDataByBzdh(FrRequestDto requestParam) {
if (requestParam != null && StringUtils.isNotBlank(requestParam.getBadh())){
Map<String,String> param = new HashMap<>();
param.put("bzdh",requestParam.getBadh());
param.put("kjkmbh",XXZZS);
List<VoucherRecordQuery> dataFromRecord = recordToQueryDao.getXxDataFromRecord(param);
if (dataFromRecord != null && dataFromRecord.size() > 0){
//3.查询税率
Map<String, String> taxMap = KjkmTaxEnmu.getTaxMap();
//4.清洗税率
dataFromRecord.forEach(v->v.setSl(taxMap.get(v.getKjkmbh())));
//5.报账单号去重
List<String> bzdhs
= dataFromRecord.stream().map(VoucherRecordQuery::getBzdh)
.distinct().collect(Collectors.toList());
//6.根据报账单号获取发票税额
List<FpTaxAmount> taxAmounts = recordToQueryDao.getXTaxAmount((bzdhs));
if (taxAmounts != null && taxAmounts.size()>0){
Map<String, String> amountMap = taxAmounts.stream().collect(Collectors.toMap(FpTaxAmount::getKey, FpTaxAmount::getFpse));
//7.添加税率
dataFromRecord.forEach(v->v.setFpse(amountMap.get(v.getSl()+v.getBzdh())==null?"0":amountMap.get(v.getSl()+v.getBzdh())));
}
//8.保存或更新
recordToQueryDao.insertOrUpdate(dataFromRecord);
}
queryDetailDataService.insertXxDataToQuery(param);
return R.ok();
}
return R.error("报账单号不能为空");
}
}

@ -23,7 +23,7 @@ public class FrDataTask {
try {
scheduleJobEntity.setJobStatus("1");
scheduleJobService.updateById(scheduleJobEntity);
recordToQueryService.getDataForFr();
recordToQueryService.getDataForFr(scheduleJobEntity.getParams());
log.info("帆软抽取增量数据定时任务结束--");
} catch (Exception e) {
e.printStackTrace();

@ -178,4 +178,163 @@
(#{item.id},#{item.uuid},#{item.zq},#{item.xfdm},#{item.xfmc},#{item.kb},#{item.bzdh},#{item.kjpz},#{item.fpse},#{item.kjkm},#{item.kjkmbh},#{item.sl},#{item.fpdm},#{item.fphm},#{item.fplx},#{item.fplxmc},#{item.createTime},#{item.rzzt})
</foreach>
</insert>
<select id="getUuidByRzzt" resultType="java.lang.String">
select uuid from voucher_record_query_detail where kjkmbh LIKE '22210101%' and rzzt = '0'
</select>
<select id="getFrDataFromRecord" parameterType="java.util.Map" resultMap="RecordToQuery">
select CONCAT(v.kjkmbh,t.uuid) as id,
t.uuid as uuid,
LEFT(v.budat,7) as zq,
v.xfdm,
v.xfmc,
v.kb,
v.kjkmbh,
v.kjkm,
t.bzdh,
GROUP_CONCAT(DISTINCT v.kjpz) as kjpz,
t.invoice_type as fplx,
t.invoice_no as fphm,
t.invoice_code as fpdm,
sum(CAST(d.tax_amount as decimal(16,2))) as fpse,
v.sl,
v.create_time,
CASE rzh_yesorno
WHEN '0' THEN '0'
ELSE '1'
END as rzzt
from t_dx_record_invoice t inner join t_dx_record_invoice_detail d
on t.uuid = d.uuid
inner join (
select r.zbzdh,
i.kbetr as sl,
r.bukrs as xfdm,
r.butxt as xfmc,
i.racct as kjkmbh,
i.txt50 as kjkm,
GROUP_CONCAT(DISTINCT r.belnr) as kjpz,
i.zkname as kb,
SUM(IFNULL(CAST(i.zhslj as DECIMAL(20,2)),0.00)) as sapse,
r.budat,
r.create_time
from voucher_record_item i inner join voucher_record r
on i.relation_id = r.id
where i.racct like '22210101%'
<if test="bzdh != null and bzdh != '' and bzdh != 'null'">
and r.zbzdh = #{bzdh}
</if>
<if test="startTime != null and startTime != '' and startTime != 'null' and endTime != null and endTime != '' and endTime != 'null'">
and DATE_FORMAT(r.create_time,'%Y-%m-%d %H:%i:%s') between #{startTime} and #{endTime}
</if>
and r.zbzdh != ''
group by r.zbzdh,i.racct
) v on t.bzdh = v.zbzdh
where d.tax_rate = v.sl
and t.invoice_type in ('01','03','08','14','31','183','185')
and d.goods_name != '(详见销货清单)'
group by d.uuid,d.tax_rate
</select>
<select id="getZyDataFromRecord" parameterType="java.util.Map" resultMap="RecordToQuery">
select CONCAT(v.kjkmbh,t.uuid) as id,
t.uuid as uuid,
LEFT(v.budat,7) as zq,
v.xfdm,
v.xfmc,
v.kb,
v.kjkmbh,
v.kjkm,
t.bzdh,
GROUP_CONCAT(DISTINCT v.kjpz) as kjpz,
t.invoice_type as fplx,
t.invoice_no as fphm,
t.invoice_code as fpdm,
sum(CAST(d.detail_amount as decimal(16,2))) as fpse,
v.sl,
v.create_time
from t_dx_sale_record_invoice t inner join t_dx_record_invoice_detail_sales d
on t.uuid = d.uuid
inner join (
select r.zbzdh,
i.kbetr as sl,
r.bukrs as xfdm,
r.butxt as xfmc,
i.racct as kjkmbh,
i.txt50 as kjkm,
GROUP_CONCAT(DISTINCT r.belnr) as kjpz,
i.zkname as kb,
SUM(IFNULL(CAST(i.zhslj as DECIMAL(20,2)),0.00)) as sapse,
r.budat,
r.create_time
from voucher_record_item i inner join voucher_record r
on i.relation_id = r.id
where i.racct like '6001%'
<if test="bzdh != null and bzdh != '' and bzdh != 'null'">
and r.zbzdh = #{bzdh}
</if>
<if test="startTime != null and startTime != '' and startTime != 'null' and endTime != null and endTime != '' and endTime != 'null'">
and DATE_FORMAT(r.create_time,'%Y-%m-%d %H:%i:%s') between #{startTime} and #{endTime}
</if>
and r.zbzdh != ''
group by r.zbzdh,i.racct
) v on t.bzdh = v.zbzdh
where d.tax_rate * 100 = v.sl
and t.invoice_type in ('01','03','08','14','31','183','185')
and d.goods_name != '(详见销货清单)'
and t.invoice_status != '2'
group by d.uuid,d.tax_rate
</select>
<select id="getFrDataFromRecordXx" resultMap="RecordToQuery">
select CONCAT(v.kjkmbh,t.uuid) as id,
t.uuid as uuid,
LEFT(v.budat,7) as zq,
v.xfdm,
v.xfmc,
v.kb,
v.kjkmbh,
v.kjkm,
t.bzdh,
GROUP_CONCAT(DISTINCT v.kjpz) as kjpz,
t.invoice_type as fplx,
t.invoice_no as fphm,
t.invoice_code as fpdm,
sum(CAST(d.tax_amount as decimal(16,2))) as fpse,
v.sl,
v.create_time
from t_dx_sale_record_invoice t inner join t_dx_record_invoice_detail_sales d
on t.uuid = d.uuid
inner join (
select r.zbzdh,
i.kbetr as sl,
r.bukrs as xfdm,
r.butxt as xfmc,
i.racct as kjkmbh,
i.txt50 as kjkm,
GROUP_CONCAT(DISTINCT r.belnr) as kjpz,
i.zkname as kb,
SUM(IFNULL(CAST(i.zhslj as DECIMAL(20,2)),0.00)) as sapse,
r.budat,
r.create_time
from voucher_record_item i inner join voucher_record r
on i.relation_id = r.id
where i.racct like '22210102%'
<if test="bzdh != null and bzdh != '' and bzdh != 'null'">
and r.zbzdh = #{bzdh}
</if>
<if test="startTime != null and startTime != '' and startTime != 'null' and endTime != null and endTime != '' and endTime != 'null'">
and DATE_FORMAT(r.create_time,'%Y-%m-%d %H:%i:%s') between #{startTime} and #{endTime}
</if>
and r.zbzdh != ''
group by r.zbzdh,i.racct
) v on t.bzdh = v.zbzdh
where d.tax_rate * 100 = v.sl
and t.invoice_type in ('01','03','08','14','31','183','185')
and d.goods_name != '(详见销货清单)'
and t.invoice_status != '2'
group by d.uuid,d.tax_rate
</select>
</mapper>

@ -28,7 +28,12 @@
i.zkname as kb,
i.racct as kjkmbh,
i.txt50 as kjkm,
sum(CAST(i.zhslj as decimal(20,2))) as sapse,
sum(
CASE i.drcrk
WHEN 'H' THEN CAST(IFNULL(i.zhsld,0) as decimal(20,2))
ELSE CAST(IFNULL(i.zhslj,0) as decimal(20,2))
END
) as sapse,
GROUP_CONCAT(distinct v.belnr ) as pzh,
v.zbzdh as bzdh,
v.zbzcgt,
@ -65,7 +70,7 @@
#{bzdh}
</foreach>
and d.goods_name != '(详见销货清单)'
and t.invoice_type in ('01','03','08','14','31','183')
and t.invoice_type in ('01','03','08','14','31','183','185')
group by d.tax_rate,t.bzdh
</select>
@ -79,9 +84,16 @@
i.zkname as kb,
i.racct as kjkmbh,
i.txt50 as kjkm,
sum(CAST(i.zwsld as decimal(20,2))) as sapse,
sum(
CASE i.drcrk
WHEN 'H' THEN CAST(IFNULL(i.zhsld,0) as decimal(20,2))
ELSE CAST(IFNULL(i.zhslj,0) as decimal(20,2))
END
) as sapse,
GROUP_CONCAT(distinct v.belnr ) as pzh,
v.zbzdh as bzdh,
i.zname2 as zbzcgt,
i.kunnr as zbzcg,
v.create_time
FROM
voucher_record_item i
@ -104,7 +116,7 @@
</foreach>
and t.invoice_status != '2'
and d.goods_name != '(详见销货清单)'
and t.invoice_type in ('01','03','08','14','31','183')
and t.invoice_type in ('01','03','08','14','31','183','185')
group by d.tax_rate,t.bzdh
</select>
@ -117,7 +129,7 @@
<foreach collection="bzdhs" item="bzdh" open="(" separator="," close=")">
#{bzdh}
</foreach>
and t.invoice_type in ('01','03','08','14','31','183')
and t.invoice_type in ('01','03','08','14','31','183','185')
and t.invoice_status != '2'
and d.goods_name != '(详见销货清单)'
group by d.tax_rate,t.bzdh
@ -133,9 +145,16 @@
i.zkname as kb,
i.racct as kjkmbh,
i.txt50 as kjkm,
sum(CAST(i.zwsld as decimal(20,2))) as sapse,
sum(
CASE i.drcrk
WHEN 'H' THEN CAST(IFNULL(i.zhsld,0) as decimal(20,2))
ELSE CAST(IFNULL(i.zhslj,0) as decimal(20,2))
END
) as sapse,
GROUP_CONCAT(distinct v.belnr ) as pzh,
v.zbzdh as bzdh,
i.zname2 as zbzcgt,
i.kunnr as zbzcg,
v.create_time
FROM
voucher_record_item i
@ -163,4 +182,118 @@
</foreach>
and rzh_yesorno in ('1','2')
</select>
<select id="getCxRzzt" parameterType="java.lang.String" resultType="java.lang.String">
select uuid from t_dx_record_invoice
where auth_status = '6'
and rzh_yesorno ='0'
</select>
<select id="getDataFromRecord" parameterType="java.util.Map" resultMap="RecordToQuery">
SELECT
CONCAT(i.racct,v.zbzdh) as id,
SUBSTRING(v.budat,1,7) zq,
i.kbetr as sl,
v.bukrs as xfdm,
v.butxt as xfmc,
i.zkname as kb,
i.racct as kjkmbh,
i.txt50 as kjkm,
sum(
CASE i.drcrk
WHEN 'H' THEN CAST(IFNULL(i.zhsld,0) as decimal(20,2))
ELSE CAST(IFNULL(i.zhslj,0) as decimal(20,2))
END
) as sapse,
GROUP_CONCAT(distinct v.belnr ) as pzh,
v.zbzdh as bzdh,
v.zbzcgt,
v.zbzcg,
v.create_time
FROM
voucher_record_item i
LEFT JOIN voucher_record v
ON v.id = i.relation_id
where i.racct like concat(#{kjkmbh},'%')
<if test="bzdh != null and bzdh != '' and bzdh != 'null'">
and v.zbzdh = #{bzdh}
</if>
<if test="startTime != null and startTime != '' and startTime != 'null' and endTime != null and endTime != '' and endTime != 'null'">
and DATE_FORMAT(v.create_time,'%Y-%m-%d %H:%i:%s') between #{startTime} and #{endTime}
</if>
and v.zbzdh != ''
group by v.zbzdh,i.racct
</select>
<select id="getDataFromRecordZy" resultMap="RecordToQuery">
SELECT
CONCAT(i.racct,v.zbzdh) as id,
SUBSTRING(v.budat,1,7) zq,
i.kbetr as sl,
v.bukrs as xfdm,
v.butxt as xfmc,
i.zkname as kb,
i.racct as kjkmbh,
i.txt50 as kjkm,
sum(
CASE i.drcrk
WHEN 'H' THEN CAST(IFNULL(i.zhsld,0) as decimal(20,2))
ELSE CAST(IFNULL(i.zhslj,0) as decimal(20,2))
END
) as sapse,
GROUP_CONCAT(distinct v.belnr ) as pzh,
v.zbzdh as bzdh,
i.zname2 as zbzcgt,
i.kunnr as zbzcg,
v.create_time
FROM
voucher_record_item i
LEFT JOIN voucher_record v
ON v.id = i.relation_id
where i.racct like CONCAT(#{kjkmbh},'%')
<if test="bzdh != null and bzdh != '' and bzdh != 'null'">
and v.zbzdh = #{bzdh}
</if>
<if test="startTime != null and startTime != '' and startTime != 'null' and endTime != null and endTime != '' and endTime != 'null'">
and DATE_FORMAT(v.create_time,'%Y-%m-%d %H:%i:%s') between #{startTime} and #{endTime}
</if>
and v.zbzdh != ''
group by v.zbzdh,i.racct
</select>
<select id="getXxDataFromRecord" resultMap="RecordToQuery">
SELECT
CONCAT(i.racct,v.zbzdh) as id,
SUBSTRING(v.budat,1,7) zq,
i.kbetr as sl,
v.bukrs as xfdm,
v.butxt as xfmc,
i.zkname as kb,
i.racct as kjkmbh,
i.txt50 as kjkm,
sum(
CASE i.drcrk
WHEN 'H' THEN CAST(IFNULL(i.zhsld,0) as decimal(20,2))
ELSE CAST(IFNULL(i.zhslj,0) as decimal(20,2))
END
) as sapse,
GROUP_CONCAT(distinct v.belnr ) as pzh,
v.zbzdh as bzdh,
i.zname2 as zbzcgt,
i.kunnr as zbzcg,
v.create_time
FROM
voucher_record_item i
LEFT JOIN voucher_record v
ON v.id = i.relation_id
where i.racct like CONCAT(#{kjkmbh},'%')
<if test="bzdh != null and bzdh != '' and bzdh != 'null'">
and v.zbzdh = #{bzdh}
</if>
<if test="startTime != null and startTime != '' and startTime != 'null' and endTime != null and endTime != '' and endTime != 'null'">
and DATE_FORMAT(v.create_time,'%Y-%m-%d %H:%i:%s') between #{startTime} and #{endTime}
</if>
and v.zbzdh != ''
group by v.zbzdh,i.racct
</select>
</mapper>

Loading…
Cancel
Save