|
@@ -12,25 +12,33 @@ 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.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.mould.service.SerialnumTplService;
|
|
|
-import com.jeeplus.test.program.configuration.fileDict.domain.ProgramFileDict;
|
|
|
-import com.jeeplus.test.program.configuration.fileDict.mapper.ProgramFileDictMapper;
|
|
|
-import com.jeeplus.test.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
|
|
|
-import com.jeeplus.test.program.configuration.fileDict.service.mapstruct.ProgramFileDictWrapper;
|
|
|
-import com.jeeplus.test.roster.service.dto.RosterBaseDTO;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import com.jeeplus.test.oss.domain.WorkAttachment;
|
|
|
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
|
|
|
+import com.jeeplus.test.workContract.mapper.WorkContractInfoMapper;
|
|
|
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
|
|
|
+import org.flowable.editor.language.json.converter.util.CollectionUtils;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
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.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@@ -42,7 +50,13 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
@Resource
|
|
|
private FinanceInvoiceBaseMapper financeInvoiceBaseMapper;
|
|
|
@Resource
|
|
|
+ private FinanceInvoiceDetailMapper financeInvoiceDetailMapper;
|
|
|
+ @Resource
|
|
|
private SerialnumTplService serialnumTplService;
|
|
|
+ @Resource
|
|
|
+ private OssServiceMapper ossServiceMapper;
|
|
|
+ @Resource
|
|
|
+ private WorkContractInfoMapper workContractInfoMapper;
|
|
|
|
|
|
public IPage<FinanceInvoiceDTO> findList(Page<FinanceInvoiceDTO> page, QueryWrapper<FinanceInvoice> queryWrapper){
|
|
|
queryWrapper.eq("fi.del_flag","0");
|
|
@@ -53,10 +67,19 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
|
|
|
FinanceInvoiceDTO financeInvoiceDTO = financeInvoiceMapper.queryById(id);
|
|
|
|
|
|
+ // 查询附件信息
|
|
|
+ List<WorkAttachmentDto> fileList = workContractInfoMapper.findDtos(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(fileList)) {
|
|
|
+ for (WorkAttachmentDto i : fileList) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ financeInvoiceDTO.setWorkAttachmentDtoList(fileList);
|
|
|
+
|
|
|
return financeInvoiceDTO;
|
|
|
}
|
|
|
|
|
|
- public ResponseEntity saveInvoice(FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
|
|
|
+ public String saveForm(FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
|
|
|
FinanceInvoice financeInvoice = FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO);
|
|
|
if (ObjectUtil.isNotEmpty(financeInvoice)) {
|
|
|
if(StringUtils.isBlank(financeInvoice.getId())){
|
|
@@ -69,6 +92,7 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
}
|
|
|
this.saveOrUpdate(financeInvoice);
|
|
|
if (ObjectUtil.isNotEmpty(financeInvoiceDTO)) {
|
|
|
+ // 基本信息保存
|
|
|
if(CollectionUtil.isNotEmpty(financeInvoiceDTO.getFinanceInvoiceBaseDTOList())){
|
|
|
List<String> delIds = financeInvoiceDTO.getFinanceInvoiceBaseDTOList().stream().distinct().filter(item->{
|
|
|
if(StringUtils.isNotBlank(item.getId())){
|
|
@@ -96,14 +120,121 @@ public class FinanceInvoiceService extends ServiceImpl<FinanceInvoiceMapper, Fin
|
|
|
financeInvoiceBaseMapper.delete(new QueryWrapper<FinanceInvoiceBase>().lambda()
|
|
|
.eq(FinanceInvoiceBase::getInvoiceId,financeInvoice.getId()));
|
|
|
}
|
|
|
+ // 附件保存
|
|
|
+ if(CollectionUtil.isNotEmpty(financeInvoiceDTO.getWorkAttachmentDtoList())){
|
|
|
+ List<String> delIds = financeInvoiceDTO.getWorkAttachmentDtoList().stream().distinct().filter(item -> {
|
|
|
+ if (StringUtils.isNotBlank(item.getId())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }).map(WorkAttachmentDto::getId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isNotEmpty(delIds)){
|
|
|
+ ossServiceMapper.delete(new QueryWrapper<WorkAttachment>().lambda()
|
|
|
+ .eq(WorkAttachment::getAttachmentId,financeInvoice.getId())
|
|
|
+ .notIn(WorkAttachment::getId,delIds));
|
|
|
+ }else{
|
|
|
+ ossServiceMapper.delete(new QueryWrapper<WorkAttachment>().lambda().eq(WorkAttachment::getAttachmentId,financeInvoice.getId()));
|
|
|
+ }
|
|
|
+ //获取当前登录人信息
|
|
|
+ UserDTO userDTO = UserUtils.getCurrentUserDTO();
|
|
|
+ AtomicInteger j = new AtomicInteger(1);
|
|
|
+ List<WorkAttachmentDto> collect = financeInvoiceDTO.getWorkAttachmentDtoList().stream().filter(item -> {
|
|
|
+ if (StringUtils.isNotBlank(item.getId())) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ collect.forEach(item->{
|
|
|
+ this.saveFiles(item,financeInvoice.getId(),userDTO,j);
|
|
|
+ j.getAndIncrement();
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ ossServiceMapper.delete(new QueryWrapper<WorkAttachment>().lambda().eq(WorkAttachment::getAttachmentId,financeInvoice.getId()));
|
|
|
+ }
|
|
|
+ // 发票明细保存
|
|
|
+ if(CollectionUtil.isNotEmpty(financeInvoiceDTO.getFinanceInvoiceDetailDTOList())){
|
|
|
+ List<String> delIds = financeInvoiceDTO.getFinanceInvoiceDetailDTOList().stream().distinct().filter(item -> {
|
|
|
+ if (StringUtils.isNotBlank(item.getId())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }).map(FinanceInvoiceDetailDTO::getId).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isNotEmpty(delIds)){
|
|
|
+ financeInvoiceDetailMapper.delete(new QueryWrapper<FinanceInvoiceDetail>().lambda()
|
|
|
+ .eq(FinanceInvoiceDetail::getInvoiceId,financeInvoice.getId())
|
|
|
+ .notIn(FinanceInvoiceDetail::getId,delIds));
|
|
|
+ }else{
|
|
|
+ financeInvoiceDetailMapper.delete(new QueryWrapper<FinanceInvoiceDetail>().lambda().eq(FinanceInvoiceDetail::getInvoiceId,financeInvoice.getId()));
|
|
|
+ }
|
|
|
+ financeInvoiceDTO.getFinanceInvoiceDetailDTOList().stream().forEach(item->{
|
|
|
+ FinanceInvoiceDetail financeInvoiceDetail = FinanceInvoiceDetailWrapper.INSTANCE.toEntity(item);
|
|
|
+ if(StringUtils.isNotBlank(financeInvoiceDetail.getId())){
|
|
|
+ financeInvoiceDetailMapper.updateById(financeInvoiceDetail);
|
|
|
+ }else{
|
|
|
+ financeInvoiceDetail.setInvoiceId(financeInvoice.getId());
|
|
|
+ financeInvoiceDetailMapper.insert(financeInvoiceDetail);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ financeInvoiceDetailMapper.delete(new QueryWrapper<FinanceInvoiceDetail>().lambda().eq(FinanceInvoiceDetail::getInvoiceId,financeInvoice.getId()));
|
|
|
+ }
|
|
|
}
|
|
|
+ return financeInvoice.getId();
|
|
|
+ }
|
|
|
|
|
|
+ public ResponseEntity saveInvoice(FinanceInvoiceDTO financeInvoiceDTO) throws Exception{
|
|
|
+ this.saveForm(financeInvoiceDTO);
|
|
|
return ResponseEntity.ok("保存成功");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 添加附件
|
|
|
+ * @param item 要添加的附件信息
|
|
|
+ * @param id 附件id: attachmentId
|
|
|
+ * @param userDTO 当前登录人信息
|
|
|
+ * @param j 排序序号
|
|
|
+ */
|
|
|
+ public void saveFiles(WorkAttachmentDto item,String id,UserDTO userDTO,AtomicInteger j){
|
|
|
+ WorkAttachment i = new WorkAttachment();
|
|
|
+ //包含了url、size、name
|
|
|
+ i.setId(UUID.randomUUID().toString().replace("-", ""));
|
|
|
+ i.setCreateDate(new Date());
|
|
|
+ i.setUpdateDate(new Date());
|
|
|
+ i.setDelFlag(0);
|
|
|
+ i.setUrl(item.getUrl());
|
|
|
+ //文件类型处理
|
|
|
+ List<String> strings = Arrays.asList(item.getName().split("\\."));
|
|
|
+ if (CollectionUtils.isNotEmpty(strings)) {
|
|
|
+ i.setType(strings.get(1));
|
|
|
+ }
|
|
|
+ i.setAttachmentId(id);
|
|
|
+ i.setAttachmentName(item.getName());
|
|
|
+ i.setAttachmentFlag("invoice");
|
|
|
+ i.setFileSize(item.getSize());
|
|
|
+ i.setSort(j.get());
|
|
|
+ ossServiceMapper.insertWorkAttachment(i, userDTO);
|
|
|
+ }
|
|
|
+
|
|
|
public ResponseEntity deleteByIds(String ids) {
|
|
|
String idArray[] =ids.split(",");
|
|
|
this.removeByIds (Lists.newArrayList (idArray));
|
|
|
return ResponseEntity.ok ("删除成功");
|
|
|
}
|
|
|
+
|
|
|
+ public Boolean queryByNumber(String number, String id) {
|
|
|
+ List<FinanceInvoiceDetail> financeInvoiceDetails = financeInvoiceDetailMapper.selectList(new QueryWrapper<FinanceInvoiceDetail>().lambda()
|
|
|
+ .eq(FinanceInvoiceDetail::getNumber, number)
|
|
|
+ .eq(FinanceInvoiceDetail::getDelFlag, '0')
|
|
|
+ .ne(StringUtils.isNotBlank(id),FinanceInvoiceDetail::getId,id));
|
|
|
+ if (CollectionUtil.isNotEmpty(financeInvoiceDetails)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String updateStatusById(FinanceInvoiceDTO financeInvoiceDTO) {
|
|
|
+ FinanceInvoice financeInvoice = FinanceInvoiceWrapper.INSTANCE.toEntity(financeInvoiceDTO);
|
|
|
+ financeInvoiceMapper.update(financeInvoice, new QueryWrapper<FinanceInvoice>().lambda().eq(FinanceInvoice::getId, financeInvoice.getId()));
|
|
|
+ return "操作成功";
|
|
|
+ }
|
|
|
}
|