Kaynağa Gözat

会计-发票修改接口独立

huangguoce 3 gün önce
ebeveyn
işleme
b8b565dbcc

+ 18 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/invoice/controller/CwFinanceInvoiceController.java

@@ -187,6 +187,24 @@ public class CwFinanceInvoiceController {
     }
 
     /**
+     * 仅作为单独保存发票数据接口使用
+     * @param cwFinanceInvoiceDTO
+     * @return
+     */
+    @ApiLog(value = "保存发票数据-流程", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('cw_finance:invoice:add','cw_finance:invoice:edit')")
+    @PostMapping("saveFormOnly")
+    public ResponseEntity saveFormOnly(@Valid @RequestBody CwFinanceInvoiceDTO cwFinanceInvoiceDTO) throws Exception {
+        CwFinanceInvoice cwFinanceInvoice = cwFinanceInvoiceService.saveFormOnly(cwFinanceInvoiceDTO);
+        return ResponseUtil.newInstance().add("businessTable", "cw_finance_invoice")
+                .add("businessId", cwFinanceInvoice.getId())
+                .add("recordType",cwFinanceInvoice.getRecordType())
+                .add("no", cwFinanceInvoice.getNo())
+                .ok ("操作成功");
+    }
+
+
+    /**
      * 作废发票数据-流程
      * @param cwFinanceInvoiceDTO
      * @return

+ 224 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/invoice/service/CwFinanceInvoiceService.java

@@ -1855,6 +1855,230 @@ public class CwFinanceInvoiceService extends ServiceImpl<CwFinanceInvoiceMapper,
         return "";
     }
 
+
+    /**
+     * 仅作为单独保存发票数据接口使用
+     * @param cwFinanceInvoiceDTO
+     * @return
+     * @throws Exception
+     */
+    public CwFinanceInvoice saveFormOnly(CwFinanceInvoiceDTO cwFinanceInvoiceDTO) throws Exception {
+        boolean isDDNotice = false;
+        String isOms = "0";
+
+        CwFinanceInvoice cwFinanceInvoice = CwFinanceInvoiceWrapper.INSTANCE.toEntity(cwFinanceInvoiceDTO);
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+        if (ObjectUtil.isNotEmpty(cwFinanceInvoice)) {
+            if (StringUtils.isBlank(cwFinanceInvoice.getId())) {
+
+                //发票编号生成
+                String serialNum = SpringUtil.getBean(IWorkAttachmentApi.class).genSerialNum(userDTO.getCompanyDTO().getId(), CwFinanceInvoiceDTO.BIZ_CODE, TokenProvider.getCurrentToken());
+                cwFinanceInvoice.setNo(serialNum);
+                if (StringUtils.isBlank(cwFinanceInvoice.getInvalidStatus())) {
+                    cwFinanceInvoice.setInvalidStatus("0");
+                }
+                if (StringUtils.isBlank(cwFinanceInvoice.getReceivablesStatus())) {
+                    cwFinanceInvoice.setReceivablesStatus("0");
+                }
+                if (StringUtils.isNotEmpty(cwFinanceInvoice.getReportType())) {
+                    cwFinanceInvoice.setReportType(cwFinanceInvoiceDTO.getReportType());
+                }
+            }
+        }
+        if (StringUtils.isBlank(cwFinanceInvoice.getNo())) {
+            String serialNum = SpringUtil.getBean(IWorkAttachmentApi.class).genSerialNum(userDTO.getCompanyDTO().getId(), CwFinanceInvoiceDTO.BIZ_CODE, TokenProvider.getCurrentToken());
+            cwFinanceInvoice.setNo(serialNum);
+        }
+        if (StringUtils.isNotEmpty(cwFinanceInvoiceDTO.getActualDrawerEmailAddress())) {
+            cwFinanceInvoice.setActualDrawerEmailAddress(cwFinanceInvoiceDTO.getActualDrawerEmailAddress());
+        }
+        if (StringUtils.isNotEmpty(cwFinanceInvoiceDTO.getRelatedInvoice())) {
+            cwFinanceInvoice.setRelatedInvoice(cwFinanceInvoiceDTO.getRelatedInvoice());
+        }
+        if (StringUtils.isNotEmpty(cwFinanceInvoiceDTO.getSituationDetail())) {
+            cwFinanceInvoice.setSituationDetail(cwFinanceInvoiceDTO.getSituationDetail());
+        }
+        if (StringUtils.isNotEmpty(cwFinanceInvoiceDTO.getRedFlushReason())) {
+            cwFinanceInvoice.setRedFlushReason(cwFinanceInvoiceDTO.getRedFlushReason());
+        }
+        if (StringUtils.isNotEmpty(cwFinanceInvoiceDTO.getIsSmsNotice())) {
+            cwFinanceInvoice.setIsSmsNotice(cwFinanceInvoiceDTO.getIsSmsNotice());
+        }
+        if (StringUtils.isNotEmpty(cwFinanceInvoiceDTO.getIsOmsBilling())) {
+            cwFinanceInvoice.setIsOmsBilling(cwFinanceInvoiceDTO.getIsOmsBilling());
+        }
+
+        if (StringUtils.isNotBlank(cwFinanceInvoiceDTO.getId())) {
+            cwFinanceInvoiceMapper.updateInfoById(cwFinanceInvoice);
+        } else {
+            cwFinanceInvoiceMapper.insert(cwFinanceInvoice);
+        }
+
+        if (ObjectUtil.isNotEmpty(cwFinanceInvoiceDTO)) {
+            // 如果当前是执行的是收款页面的保存方法
+            if ("1".equals(cwFinanceInvoiceDTO.getIsReceivables())) {
+                // 如果传过来的收款日期为空,则将本条发票的收款日期置空
+                if (ObjectUtil.isEmpty(cwFinanceInvoiceDTO.getReceivablesDate())) {
+                    // 根据发票id,置空发票的收款日期
+                    cwFinanceInvoiceMapper.setReceivablesDateNull(cwFinanceInvoice.getId());
+                }
+            }
+            // 基本信息保存
+            if (CollectionUtil.isNotEmpty(cwFinanceInvoiceDTO.getFinanceInvoiceBaseDTOList())) {
+                List<String> delIds = cwFinanceInvoiceDTO.getFinanceInvoiceBaseDTOList().stream().distinct().filter(item -> {
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(CwFinanceInvoiceBaseDTO::getId).collect(Collectors.toList());
+                if (CollectionUtil.isNotEmpty(delIds)) {
+                    cwFinanceInvoiceBaseMapper.delete(new QueryWrapper<CwFinanceInvoiceBase>().lambda()
+                            .eq(CwFinanceInvoiceBase::getInvoiceId, cwFinanceInvoice.getId()).notIn(CwFinanceInvoiceBase::getId, delIds));
+                } else {
+                    cwFinanceInvoiceBaseMapper.delete(new QueryWrapper<CwFinanceInvoiceBase>().lambda()
+                            .eq(CwFinanceInvoiceBase::getInvoiceId, cwFinanceInvoice.getId()));
+                }
+                cwFinanceInvoiceDTO.getFinanceInvoiceBaseDTOList().stream().forEach(item -> {
+                    CwFinanceInvoiceBase cwFinanceInvoiceBase = CwFinanceInvoiceBaseWrapper.INSTANCE.toEntity(item);
+
+                    cwFinanceInvoiceBase.setAccount(item.getAccount());
+                    if (StringUtils.isNotBlank(cwFinanceInvoiceBase.getId())) {
+                        cwFinanceInvoiceBaseMapper.updateById(cwFinanceInvoiceBase);
+                    } else {
+                        cwFinanceInvoiceBase.setInvoiceId(cwFinanceInvoice.getId());
+                        cwFinanceInvoiceBaseMapper.insert(cwFinanceInvoiceBase);
+                    }
+                    if (StringUtils.isNotEmpty(cwFinanceInvoiceBase.getProgramId())) {
+                        CwProjectRecordsDTO projectRecordsDTO = cwProjectRecordsMapper.queryById(cwFinanceInvoiceBase.getProgramId());
+                        //普通项目
+                        if (null != projectRecordsDTO) {
+                            cwFinanceInvoiceBase.setType("1");
+                            cwFinanceInvoiceBaseMapper.updateById(cwFinanceInvoiceBase);
+                            cwFinanceInvoice.setRecordType(cwFinanceInvoiceBase.getType());
+                        }
+                        if (null != cwProjectReportMapper.queryById(cwFinanceInvoiceBase.getProgramId())) {
+                            cwFinanceInvoiceBase.setType("2");
+                            cwFinanceInvoiceBaseMapper.updateById(cwFinanceInvoiceBase);
+                            cwFinanceInvoice.setRecordType(cwFinanceInvoiceBase.getType());
+                        }
+                        //预开票项目
+                        if (null != projectRecordsDTO && "1".equals(projectRecordsDTO.getIsPreInvoice())) {
+                            cwFinanceInvoiceBase.setType("4");
+                            cwFinanceInvoiceBaseMapper.updateById(cwFinanceInvoiceBase);
+                            cwFinanceInvoice.setRecordType(cwFinanceInvoiceBase.getType());
+                        }
+                    } else {
+                        cwFinanceInvoiceBase.setType("0");
+                        cwFinanceInvoiceBaseMapper.updateById(cwFinanceInvoiceBase);
+                        cwFinanceInvoice.setRecordType(cwFinanceInvoiceBase.getType());
+                    }
+
+                });
+            } else {
+                cwFinanceInvoiceBaseMapper.delete(new QueryWrapper<CwFinanceInvoiceBase>().lambda()
+                        .eq(CwFinanceInvoiceBase::getInvoiceId, cwFinanceInvoice.getId()));
+            }
+            // 附件
+            Map<String, String> map = new HashMap<>();
+            String fileList = JSON.toJSONString((cwFinanceInvoiceDTO.getWorkAttachmentDtoList()));
+            String attachmentId = cwFinanceInvoice.getId();
+            String attachmentFlag = "cw_invoice";
+            map.put("fileList", fileList);
+            map.put("attachmentId", attachmentId);
+            map.put("attachmentFlag", attachmentFlag);
+            map.put("currentToken", TokenProvider.getCurrentToken());
+            SpringUtil.getBean(IWorkAttachmentApi.class).saveOrUpdateFileListFlag(map);
+
+            // 签约合同附件
+            Map<String, String> map1 = new HashMap<>();
+            String fileList1 = JSON.toJSONString((cwFinanceInvoiceDTO.getWorkAttachmenSignContract()));
+            String attachmentId1 = cwFinanceInvoice.getId();
+            String attachmentFlag1 = "cw_invoice_sign_contract";
+            map1.put("fileList", fileList1);
+            map1.put("attachmentId", attachmentId1);
+            map1.put("attachmentFlag", attachmentFlag1);
+            map1.put("currentToken", TokenProvider.getCurrentToken());
+            SpringUtil.getBean(IWorkAttachmentApi.class).saveOrUpdateFileListFlag(map1);
+
+            // 发票明细保存
+            if (CollectionUtil.isNotEmpty(cwFinanceInvoiceDTO.getFinanceInvoiceDetailDTOList())) {
+                List<String> delIds = cwFinanceInvoiceDTO.getFinanceInvoiceDetailDTOList().stream().distinct().filter(item -> {
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(CwFinanceInvoiceDetailDTO::getId).collect(Collectors.toList());
+                if (CollectionUtil.isNotEmpty(delIds)) {
+                    cwFinanceInvoiceDetailMapper.delete(new QueryWrapper<CwFinanceInvoiceDetail>().lambda()
+                            .eq(CwFinanceInvoiceDetail::getInvoiceId, cwFinanceInvoice.getId())
+                            .notIn(CwFinanceInvoiceDetail::getId, delIds));
+                } else {
+                    cwFinanceInvoiceDetailMapper.delete(new QueryWrapper<CwFinanceInvoiceDetail>().lambda().eq(CwFinanceInvoiceDetail::getInvoiceId, cwFinanceInvoice.getId()));
+                }
+                cwFinanceInvoiceDTO.getFinanceInvoiceDetailDTOList().stream().forEach(item -> {
+                    CwFinanceInvoiceDetail cwFinanceInvoiceDetail = CwFinanceInvoiceDetailWrapper.INSTANCE.toEntity(item);
+                    if (StringUtils.isNotBlank(cwFinanceInvoiceDetail.getId())) {
+                        cwFinanceInvoiceDetailMapper.updateById(cwFinanceInvoiceDetail);
+                    } else {
+                        cwFinanceInvoiceDetail.setInvoiceId(cwFinanceInvoice.getId());
+                        cwFinanceInvoiceDetailMapper.insert(cwFinanceInvoiceDetail);
+                    }
+                });
+            } else {
+                cwFinanceInvoiceDetailMapper.delete(new QueryWrapper<CwFinanceInvoiceDetail>().lambda().eq(CwFinanceInvoiceDetail::getInvoiceId, cwFinanceInvoice.getId()));
+            }
+            // 收款明细保存
+            if (CollectionUtil.isNotEmpty(cwFinanceInvoiceDTO.getFinanceInvoiceReceivablesDTOList())) {
+                List<String> delIds = cwFinanceInvoiceDTO.getFinanceInvoiceReceivablesDTOList().stream().distinct().filter(item -> {
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(CwFinanceInvoiceReceivablesDTO::getId).collect(Collectors.toList());
+                if (CollectionUtil.isNotEmpty(delIds)) {
+                    cwFinanceInvoiceReceivablesMapper.delete(new QueryWrapper<CwFinanceInvoiceReceivables>().lambda()
+                            .eq(CwFinanceInvoiceReceivables::getInvoiceId, cwFinanceInvoice.getId())
+                            .notIn(CwFinanceInvoiceReceivables::getId, delIds));
+                } else {
+                    cwFinanceInvoiceReceivablesMapper.delete(new QueryWrapper<CwFinanceInvoiceReceivables>().lambda().eq(CwFinanceInvoiceReceivables::getInvoiceId, cwFinanceInvoice.getId()));
+                }
+                cwFinanceInvoiceDTO.getFinanceInvoiceReceivablesDTOList().stream().forEach(item -> {
+                    CwFinanceInvoiceReceivables cwFinanceInvoiceReceivables = CwFinanceInvoiceReceivablesWrapper.INSTANCE.toEntity(item);
+                    if (StringUtils.isNotBlank(cwFinanceInvoiceReceivables.getId())) {
+                        cwFinanceInvoiceReceivablesMapper.updateById(cwFinanceInvoiceReceivables);
+                    } else {
+                        cwFinanceInvoiceReceivables.setInvoiceId(cwFinanceInvoice.getId());
+                        cwFinanceInvoiceReceivablesMapper.insert(cwFinanceInvoiceReceivables);
+                    }
+                });
+            } else {
+                cwFinanceInvoiceReceivablesMapper.delete(new QueryWrapper<CwFinanceInvoiceReceivables>().lambda().eq(CwFinanceInvoiceReceivables::getInvoiceId, cwFinanceInvoice.getId()));
+            }
+            // 作废信息保存
+            if (ObjectUtil.isNotEmpty(cwFinanceInvoiceDTO.getFinanceInvoiceInvalidDTO())) {
+                CwFinanceInvoiceInvalid cwFinanceInvoiceInvalid = CwFinanceInvoiceInvalidWrapper.INSTANCE.toEntity(cwFinanceInvoiceDTO.getFinanceInvoiceInvalidDTO());
+                if (StringUtils.isNotBlank(cwFinanceInvoiceInvalid.getId())) {
+                    cwFinanceInvoiceInvalidMapper.update(cwFinanceInvoiceInvalid,
+                            new QueryWrapper<CwFinanceInvoiceInvalid>().lambda().eq(CwFinanceInvoiceInvalid::getId, cwFinanceInvoiceInvalid.getId()));
+                } else {
+                    cwFinanceInvoiceInvalid.setInvalidStatus("0");
+                    cwFinanceInvoiceInvalid.setInvoiceId(cwFinanceInvoice.getId());
+                    cwFinanceInvoiceInvalidMapper.insert(cwFinanceInvoiceInvalid);
+                }
+            } else {
+                cwFinanceInvoiceInvalidMapper.delete(new QueryWrapper<CwFinanceInvoiceInvalid>().lambda().eq(CwFinanceInvoiceInvalid::getInvoiceId, cwFinanceInvoice.getId()));
+                CwFinanceInvoiceInvalid cwFinanceInvoiceInvalid = new CwFinanceInvoiceInvalid();
+                cwFinanceInvoiceInvalid.setInvalidStatus("0");
+                cwFinanceInvoiceInvalid.setInvoiceId(cwFinanceInvoice.getId());
+                cwFinanceInvoiceInvalidMapper.insert(cwFinanceInvoiceInvalid);
+            }
+        }
+        return cwFinanceInvoice;
+    }
+
+
+
     public String findLastLevelCode(List<AreaDTO> areaDTOList, String reconciliationArea) {
         // 按 "-" 拆分层级
         String[] split = reconciliationArea.split("-");