|
@@ -366,7 +366,12 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
public FinanceInvoiceDTO queryById(String id) {
|
|
|
|
|
|
FinanceInvoiceDTO financeInvoiceDTO = financeInvoiceMapper.queryById(id);
|
|
|
-
|
|
|
+ if(ObjectUtil.isNotEmpty(financeInvoiceDTO) && "1".equals(financeInvoiceDTO.getRedInvoiceFlag()) ){
|
|
|
+ //此处为红冲数据 需要获取发票号
|
|
|
+ FinanceInvoiceDTO redCwFinanceInvoiceDTO = financeInvoiceMapper.queryById(financeInvoiceDTO.getRedInvoiceRelevancyId());
|
|
|
+ String invoiceNumberStr = financeInvoiceMapper.getInvoiceNumberStr(redCwFinanceInvoiceDTO.getId());
|
|
|
+ financeInvoiceDTO.setInvoiceNumberStr(invoiceNumberStr);
|
|
|
+ }
|
|
|
// 查询附件信息
|
|
|
List<WorkAttachmentInfo> fileList = workContractInfoMapper.findDtos(id);
|
|
|
if (CollectionUtil.isNotEmpty(fileList)) {
|
|
@@ -400,6 +405,9 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
if(StringUtils.isNotEmpty(financeInvoiceDTO.getActualDrawerEmailAddress())){
|
|
|
financeInvoice.setActualDrawerEmailAddress(financeInvoiceDTO.getActualDrawerEmailAddress());
|
|
|
}
|
|
|
+ financeInvoice.setRedInvoiceFlag(financeInvoiceDTO.getRedInvoiceFlag());
|
|
|
+ financeInvoice.setRedInvoiceRelevancyId(financeInvoiceDTO.getRedInvoiceRelevancyId());
|
|
|
+ financeInvoice.setRedInvoiceRelevancyNumber(financeInvoiceDTO.getRedInvoiceRelevancyNumber());
|
|
|
}
|
|
|
this.saveOrUpdate(financeInvoice);
|
|
|
if (ObjectUtil.isNotEmpty(financeInvoiceDTO)) {
|
|
@@ -686,4 +694,238 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
List<FinanceInvoiceDTO> list=financeInvoiceMapper.getExceedFinance();
|
|
|
return list;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询红字发票数据
|
|
|
+ * @param page
|
|
|
+ * @param financeInvoiceDTO
|
|
|
+ * @param s
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IPage<FinanceInvoiceDTO> findRedList(Page<FinanceInvoiceDTO> page, FinanceInvoiceDTO financeInvoiceDTO, String s) throws Exception {
|
|
|
+ QueryWrapper<FinanceInvoice> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO), FinanceInvoice.class );
|
|
|
+ queryWrapper.eq("fi.del_flag","0");
|
|
|
+ queryWrapper.orderByDesc("fi.create_time");
|
|
|
+ //判定开票金额大于等于0 的发票信息
|
|
|
+ queryWrapper.ge("fi.account","0");
|
|
|
+ ArrayList<String> searchIdList = new ArrayList<>();
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ AtomicInteger checkNum = new AtomicInteger();
|
|
|
+ if (ObjectUtil.isNotEmpty(financeInvoiceDTO)) {
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getNumber())) {
|
|
|
+ List<FinanceInvoiceDetail> financeInvoiceDetails = financeInvoiceDetailMapper.selectList(new LambdaQueryWrapper<FinanceInvoiceDetail>().like(FinanceInvoiceDetail::getNumber, financeInvoiceDTO.getNumber()));
|
|
|
+ List<String> ids = financeInvoiceDetails.stream().distinct().map(FinanceInvoiceDetail::getInvoiceId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isEmpty(ids)) {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ if (CollectionUtil.isNotEmpty(searchIdList)){
|
|
|
+ List<String> newSearchIdList = getSearchList(searchIdList,ids);
|
|
|
+ searchIdList = new ArrayList<String>();
|
|
|
+ for (String item : newSearchIdList) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (checkNum.get() > 0){
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ for (String item : ids) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ checkNum.getAndIncrement();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getAccountBegin())&&StringUtils.isNotBlank(financeInvoiceDTO.getAccountEnd())) {
|
|
|
+ List<FinanceInvoice> financeInvoices = financeInvoiceMapper.selectList(new LambdaQueryWrapper<FinanceInvoice>()
|
|
|
+ .between(FinanceInvoice::getAccount, new BigDecimal(financeInvoiceDTO.getAccountBegin()), new BigDecimal(financeInvoiceDTO.getAccountEnd())));
|
|
|
+ List<String> ids = financeInvoices.stream().distinct().map(FinanceInvoice::getId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isEmpty(ids)) {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ if (CollectionUtil.isNotEmpty(searchIdList)){
|
|
|
+ List<String> newSearchIdList = getSearchList(searchIdList,ids);
|
|
|
+ searchIdList = new ArrayList<String>();
|
|
|
+ for (String item : newSearchIdList) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (checkNum.get() > 0){
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ for (String item : ids) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ checkNum.getAndIncrement();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getBillingDateBegin())&&StringUtils.isNotBlank(financeInvoiceDTO.getBillingDateEnd())) {
|
|
|
+ List<FinanceInvoice> financeInvoices = financeInvoiceMapper.selectList(new LambdaQueryWrapper<FinanceInvoice>()
|
|
|
+ .between(FinanceInvoice::getBillingDate, sdf.parse(financeInvoiceDTO.getBillingDateBegin()), sdf.parse(financeInvoiceDTO.getBillingDateEnd())));
|
|
|
+ List<String> ids = financeInvoices.stream().distinct().map(FinanceInvoice::getId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isEmpty(ids)) {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ if (CollectionUtil.isNotEmpty(searchIdList)){
|
|
|
+ List<String> newSearchIdList = getSearchList(searchIdList,ids);
|
|
|
+ searchIdList = new ArrayList<String>();
|
|
|
+ for (String item : newSearchIdList) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (checkNum.get() > 0){
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ for (String item : ids) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ checkNum.getAndIncrement();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getRemittanceDateBegin())&&StringUtils.isNotBlank(financeInvoiceDTO.getRemittanceDateEnd())) {
|
|
|
+ List<FinanceInvoice> financeInvoices = financeInvoiceMapper.selectList(new LambdaQueryWrapper<FinanceInvoice>()
|
|
|
+ .between(FinanceInvoice::getReceivablesDate, sdf.parse(financeInvoiceDTO.getRemittanceDateBegin()), sdf.parse(financeInvoiceDTO.getRemittanceDateEnd())));
|
|
|
+ List<String> ids = financeInvoices.stream().distinct().map(FinanceInvoice::getId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isEmpty(ids)) {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ if (CollectionUtil.isNotEmpty(searchIdList)){
|
|
|
+ List<String> newSearchIdList = getSearchList(searchIdList,ids);
|
|
|
+ searchIdList = new ArrayList<String>();
|
|
|
+ for (String item : newSearchIdList) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (checkNum.get() > 0){
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ for (String item : ids) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ checkNum.getAndIncrement();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getProgramId())||StringUtils.isNotBlank(financeInvoiceDTO.getProgramName())) {
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getProgramId())){
|
|
|
+ List<FinanceInvoiceBase> financeInvoiceBaseList = financeInvoiceBaseMapper.selectList(new LambdaQueryWrapper<FinanceInvoiceBase>()
|
|
|
+ .eq(FinanceInvoiceBase::getProgramId,financeInvoiceDTO.getProgramId()));
|
|
|
+ List<String> ids = financeInvoiceBaseList.stream().distinct().map(FinanceInvoiceBase::getInvoiceId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isEmpty(ids)) {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ if (CollectionUtil.isNotEmpty(searchIdList)){
|
|
|
+ List<String> newSearchIdList = getSearchList(searchIdList,ids);
|
|
|
+ searchIdList = new ArrayList<String>();
|
|
|
+ for (String item : newSearchIdList) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (checkNum.get() > 0){
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ for (String item : ids) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ checkNum.getAndIncrement();
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ List<FinanceInvoiceBase> financeInvoiceBaseList = financeInvoiceBaseMapper.selectList(new LambdaQueryWrapper<FinanceInvoiceBase>()
|
|
|
+ .like(FinanceInvoiceBase::getProgramName,financeInvoiceDTO.getProgramName()));
|
|
|
+ List<String> ids = financeInvoiceBaseList.stream().distinct().map(FinanceInvoiceBase::getInvoiceId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isEmpty(ids)) {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ if (CollectionUtil.isNotEmpty(searchIdList)){
|
|
|
+ List<String> newSearchIdList = getSearchList(searchIdList,ids);
|
|
|
+ searchIdList = new ArrayList<String>();
|
|
|
+ for (String item : newSearchIdList) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (checkNum.get() > 0){
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }else{
|
|
|
+ for (String item : ids) {
|
|
|
+ searchIdList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ checkNum.getAndIncrement();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getOperator())){
|
|
|
+ queryWrapper.eq("su.id",financeInvoiceDTO.getOperator()).or().like("su.name",financeInvoiceDTO.getOperator());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getReconciliationPeopleName())) {
|
|
|
+// List<User> users = SpringUtil.getBean ( IUserApi.class ).selectListByName(financeInvoiceDTO.getReconciliationPeopleName());
|
|
|
+// List<String> userIdList = users.stream().distinct().map(User::getId).collect(Collectors.toList());
|
|
|
+// if (CollectionUtil.isNotEmpty(userIdList)) {
|
|
|
+// queryWrapper.in("fi.reconciliation_people",userIdList);
|
|
|
+// } else {
|
|
|
+// return new Page<FinanceInvoiceDTO>();
|
|
|
+// }
|
|
|
+ queryWrapper.like("su1.name",financeInvoiceDTO.getReconciliationPeopleName());
|
|
|
+
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getOperatorOffice())){
|
|
|
+ List<User> userList = SpringUtil.getBean ( IUserApi.class ).getUserByOfficeAll(financeInvoiceDTO.getOperatorOffice());
|
|
|
+ if (CollectionUtil.isNotEmpty(userList)) {
|
|
|
+ List<String> userIdList = userList.stream().distinct().map(User::getId).collect(Collectors.toList());
|
|
|
+ if (CollectionUtil.isNotEmpty(userIdList)) {
|
|
|
+ queryWrapper.in("fi.create_by_id",userIdList);
|
|
|
+ } else {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(searchIdList)){
|
|
|
+ List<String> ids = searchIdList.stream().distinct().collect(Collectors.toList());
|
|
|
+ queryWrapper.in("fi.id",ids);
|
|
|
+ } else{
|
|
|
+ if (checkNum.get() > 0) {
|
|
|
+ return new Page<FinanceInvoiceDTO>();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getName())){
|
|
|
+ queryWrapper.like("fi.name",financeInvoiceDTO.getName());
|
|
|
+ }
|
|
|
+ //开票类型筛选
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getBillingType())){
|
|
|
+ queryWrapper.eq("fi.billing_type",financeInvoiceDTO.getBillingType());
|
|
|
+ }
|
|
|
+
|
|
|
+ IPage<FinanceInvoiceDTO> pageList = financeInvoiceMapper.findRedList(page, queryWrapper);
|
|
|
+ pageList.getRecords().stream().forEach(item ->{
|
|
|
+ // 发票申请
|
|
|
+ if (StringUtils.isNotBlank(item.getTaskId()) && StringUtils.isNotBlank(item.getStatus())) {
|
|
|
+ if ("2".equals(item.getStatus())) { // “审核中”的数据要获取数据审核人
|
|
|
+ item.setAuditUserIds(flowTaskService.getTaskAuditUsers(item.getTaskId())); // 获取数据审核人
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 发票作废
|
|
|
+ if (StringUtils.isNotBlank(item.getTaskIdInvalid()) && StringUtils.isNotBlank(item.getStatus())) {
|
|
|
+ if ("6".equals(item.getStatus())) { // “审核中”的数据要获取数据审核人
|
|
|
+ item.setAuditUserIdsInvalid(flowTaskService.getTaskAuditUsers(item.getTaskIdInvalid())); // 获取数据审核人
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(item.getBillingType()) && "2".equals(item.getBillingType()) && StringUtils.isNotBlank(item.getName())){
|
|
|
+ item.setBillingWorkplaceReal(item.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ return pageList;
|
|
|
+ }
|
|
|
}
|