|
@@ -2,29 +2,27 @@ package com.jeeplus.test.finance.invoice.service;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.jeeplus.core.query.QueryWrapperGenerator;
|
|
|
import com.jeeplus.sys.service.dto.UserDTO;
|
|
|
import com.jeeplus.sys.utils.StringUtils;
|
|
|
import com.jeeplus.sys.utils.UserUtils;
|
|
|
-import com.jeeplus.test.finance.invoice.domain.FinanceInvoice;
|
|
|
-import com.jeeplus.test.finance.invoice.domain.FinanceInvoiceBase;
|
|
|
-import com.jeeplus.test.finance.invoice.domain.FinanceInvoiceDetail;
|
|
|
-import com.jeeplus.test.finance.invoice.mapper.FinanceInvoiceBaseMapper;
|
|
|
-import com.jeeplus.test.finance.invoice.mapper.FinanceInvoiceDetailMapper;
|
|
|
-import com.jeeplus.test.finance.invoice.mapper.FinanceInvoiceMapper;
|
|
|
+import com.jeeplus.test.finance.invoice.domain.*;
|
|
|
+import com.jeeplus.test.finance.invoice.mapper.*;
|
|
|
import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceBaseDTO;
|
|
|
import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDTO;
|
|
|
import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO;
|
|
|
-import com.jeeplus.test.finance.invoice.service.mapstruct.FinanceInvoiceBaseWrapper;
|
|
|
-import com.jeeplus.test.finance.invoice.service.mapstruct.FinanceInvoiceDetailWrapper;
|
|
|
-import com.jeeplus.test.finance.invoice.service.mapstruct.FinanceInvoiceWrapper;
|
|
|
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO;
|
|
|
+import com.jeeplus.test.finance.invoice.service.mapstruct.*;
|
|
|
import com.jeeplus.test.mould.service.SerialnumTplService;
|
|
|
import com.jeeplus.test.oss.domain.WorkAttachment;
|
|
|
import com.jeeplus.test.oss.mapper.OssServiceMapper;
|
|
|
+import com.jeeplus.test.rank.domain.Rank;
|
|
|
import com.jeeplus.test.workContract.mapper.WorkContractInfoMapper;
|
|
|
import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
|
|
|
import org.flowable.editor.language.json.converter.util.CollectionUtils;
|
|
@@ -34,12 +32,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.UUID;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
@Service
|
|
|
@Transactional
|
|
@@ -52,14 +49,75 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
@Resource
|
|
|
private FinanceInvoiceDetailMapper financeInvoiceDetailMapper;
|
|
|
@Resource
|
|
|
+ private FinanceInvoiceReceivablesMapper financeInvoiceReceivablesMapper;
|
|
|
+ @Resource
|
|
|
+ private FinanceInvoiceInvalidMapper financeInvoiceInvalidMapper;
|
|
|
+ @Resource
|
|
|
private SerialnumTplService serialnumTplService;
|
|
|
@Resource
|
|
|
private OssServiceMapper ossServiceMapper;
|
|
|
@Resource
|
|
|
private WorkContractInfoMapper workContractInfoMapper;
|
|
|
|
|
|
- public IPage<FinanceInvoiceDTO> findList(Page<FinanceInvoiceDTO> page, QueryWrapper<FinanceInvoice> queryWrapper){
|
|
|
+ public IPage<FinanceInvoiceDTO> findList(Page<FinanceInvoiceDTO> page, FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
|
|
|
+ QueryWrapper<FinanceInvoice> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO), FinanceInvoice.class );
|
|
|
queryWrapper.eq("fi.del_flag","0");
|
|
|
+ ArrayList<String> searchIdList = new ArrayList<>();
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ 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());
|
|
|
+ ids.stream().forEach(item->{
|
|
|
+ searchIdList.add(item);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(financeInvoiceDTO.getAccountBegin())&&StringUtils.isNotBlank(financeInvoiceDTO.getAccountEnd())) {
|
|
|
+ List<FinanceInvoice> financeInvoices = financeInvoiceMapper.selectList(new LambdaQueryWrapper<FinanceInvoice>()
|
|
|
+ .between(FinanceInvoice::getAccount, financeInvoiceDTO.getAccountBegin(), financeInvoiceDTO.getAccountEnd()));
|
|
|
+ List<String> ids = financeInvoices.stream().distinct().map(FinanceInvoice::getId).collect(Collectors.toList());
|
|
|
+ ids.stream().forEach(item->{
|
|
|
+ searchIdList.add(item);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ 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());
|
|
|
+ ids.stream().forEach(item->{
|
|
|
+ searchIdList.add(item);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ 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());
|
|
|
+ ids.stream().forEach(item->{
|
|
|
+ searchIdList.add(item);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ 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());
|
|
|
+ ids.stream().forEach(item->{
|
|
|
+ searchIdList.add(item);
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ List<FinanceInvoiceBase> financeInvoiceBaseList = financeInvoiceBaseMapper.selectList(new LambdaQueryWrapper<FinanceInvoiceBase>()
|
|
|
+ .eq(FinanceInvoiceBase::getProgramName,financeInvoiceDTO.getProgramName()));
|
|
|
+ List<String> ids = financeInvoiceBaseList.stream().distinct().map(FinanceInvoiceBase::getInvoiceId).collect(Collectors.toList());
|
|
|
+ ids.stream().forEach(item->{
|
|
|
+ searchIdList.add(item);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(searchIdList)){
|
|
|
+ List<String> ids = searchIdList.stream().distinct().collect(Collectors.toList());
|
|
|
+ queryWrapper.in("fi.id",ids);
|
|
|
+ }
|
|
|
return financeInvoiceMapper.findList(page,queryWrapper);
|
|
|
}
|
|
|
|
|
@@ -74,7 +132,9 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
}
|
|
|
}
|
|
|
- financeInvoiceDTO.setWorkAttachmentDtoList(fileList);
|
|
|
+ if(CollectionUtil.isNotEmpty(fileList)){
|
|
|
+ financeInvoiceDTO.setWorkAttachmentDtoList(fileList);
|
|
|
+ }
|
|
|
|
|
|
return financeInvoiceDTO;
|
|
|
}
|
|
@@ -178,6 +238,51 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
}else{
|
|
|
financeInvoiceDetailMapper.delete(new QueryWrapper<FinanceInvoiceDetail>().lambda().eq(FinanceInvoiceDetail::getInvoiceId,financeInvoice.getId()));
|
|
|
}
|
|
|
+ // 收款明细保存
|
|
|
+ if(CollectionUtil.isNotEmpty(financeInvoiceDTO.getFinanceInvoiceReceivablesDTOList())){
|
|
|
+ List<String> delIds = financeInvoiceDTO.getFinanceInvoiceReceivablesDTOList().stream().distinct().filter(item -> {
|
|
|
+ if (StringUtils.isNotBlank(item.getId())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }).map(FinanceInvoiceReceivablesDTO::getId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isNotEmpty(delIds)){
|
|
|
+ financeInvoiceReceivablesMapper.delete(new QueryWrapper<FinanceInvoiceReceivables>().lambda()
|
|
|
+ .eq(FinanceInvoiceReceivables::getInvoiceId,financeInvoice.getId())
|
|
|
+ .notIn(FinanceInvoiceReceivables::getId,delIds));
|
|
|
+ }else{
|
|
|
+ financeInvoiceReceivablesMapper.delete(new QueryWrapper<FinanceInvoiceReceivables>().lambda().eq(FinanceInvoiceReceivables::getInvoiceId,financeInvoice.getId()));
|
|
|
+ }
|
|
|
+ financeInvoiceDTO.getFinanceInvoiceReceivablesDTOList().stream().forEach(item->{
|
|
|
+ FinanceInvoiceReceivables financeInvoiceReceivables = FinanceInvoiceReceivablesWrapper.INSTANCE.toEntity(item);
|
|
|
+ if(StringUtils.isNotBlank(financeInvoiceReceivables.getId())){
|
|
|
+ financeInvoiceReceivablesMapper.updateById(financeInvoiceReceivables);
|
|
|
+ }else{
|
|
|
+ financeInvoiceReceivables.setInvoiceId(financeInvoice.getId());
|
|
|
+ financeInvoiceReceivablesMapper.insert(financeInvoiceReceivables);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ financeInvoiceReceivablesMapper.delete(new QueryWrapper<FinanceInvoiceReceivables>().lambda().eq(FinanceInvoiceReceivables::getInvoiceId,financeInvoice.getId()));
|
|
|
+ }
|
|
|
+ // 作废信息保存
|
|
|
+ if(ObjectUtil.isNotEmpty(financeInvoiceDTO.getFinanceInvoiceInvalidDTO())){
|
|
|
+ FinanceInvoiceInvalid financeInvoiceInvalid = FinanceInvoiceInvalidWrapper.INSTANCE.toEntity(financeInvoiceDTO.getFinanceInvoiceInvalidDTO());
|
|
|
+ if(StringUtils.isNotBlank(financeInvoiceInvalid.getId())){
|
|
|
+ financeInvoiceInvalidMapper.update(financeInvoiceInvalid,
|
|
|
+ new QueryWrapper<FinanceInvoiceInvalid>().lambda().eq(FinanceInvoiceInvalid::getId,financeInvoiceInvalid.getId()));
|
|
|
+ }else{
|
|
|
+ financeInvoiceInvalid.setInvalidStatus("0");
|
|
|
+ financeInvoiceInvalid.setInvoiceId(financeInvoice.getId());
|
|
|
+ financeInvoiceInvalidMapper.insert(financeInvoiceInvalid);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ financeInvoiceInvalidMapper.delete(new QueryWrapper<FinanceInvoiceInvalid>().lambda().eq(FinanceInvoiceInvalid::getInvoiceId,financeInvoice.getId()));
|
|
|
+ FinanceInvoiceInvalid financeInvoiceInvalid = new FinanceInvoiceInvalid();
|
|
|
+ financeInvoiceInvalid.setInvalidStatus("0");
|
|
|
+ financeInvoiceInvalid.setInvoiceId(financeInvoice.getId());
|
|
|
+ financeInvoiceInvalidMapper.insert(financeInvoiceInvalid);
|
|
|
+ }
|
|
|
}
|
|
|
return financeInvoice.getId();
|
|
|
}
|
|
@@ -187,6 +292,13 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
return ResponseEntity.ok("保存成功");
|
|
|
}
|
|
|
|
|
|
+ public String saveFormInvalid(FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
|
|
|
+ String invoiceId = this.saveForm(financeInvoiceDTO);
|
|
|
+ List<FinanceInvoiceInvalid> financeInvoiceInvalids = financeInvoiceInvalidMapper.selectList(
|
|
|
+ new QueryWrapper<FinanceInvoiceInvalid>().lambda().eq(FinanceInvoiceInvalid::getInvoiceId, invoiceId));
|
|
|
+ return financeInvoiceInvalids.get(0).getId();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 添加附件
|
|
|
* @param item 要添加的附件信息
|
|
@@ -232,9 +344,20 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ public String queryIdByInvalidId(String id) {
|
|
|
+ FinanceInvoiceInvalid financeInvoiceInvalid = financeInvoiceInvalidMapper.selectById(id);
|
|
|
+ return financeInvoiceInvalid.getInvoiceId();
|
|
|
+ }
|
|
|
+
|
|
|
public String updateStatusById(FinanceInvoiceDTO financeInvoiceDTO) {
|
|
|
FinanceInvoice financeInvoice = FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO);
|
|
|
financeInvoiceMapper.update(financeInvoice, new QueryWrapper<FinanceInvoice>().lambda().eq(FinanceInvoice::getId, financeInvoice.getId()));
|
|
|
return "操作成功";
|
|
|
}
|
|
|
+
|
|
|
+ public String isReceivables(FinanceInvoiceDTO financeInvoiceDTO) {
|
|
|
+ FinanceInvoice financeInvoice = FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO);
|
|
|
+ financeInvoiceMapper.update(financeInvoice, new QueryWrapper<FinanceInvoice>().lambda().eq(FinanceInvoice::getId, financeInvoice.getId()));
|
|
|
+ return "操作成功";
|
|
|
+ }
|
|
|
}
|