Browse Source

预开票

sangwenwei 1 year atrás
parent
commit
85e30693a1

+ 3 - 5
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/invoice/mapper/xml/CwFinanceInvoiceMapper.xml

@@ -376,10 +376,10 @@
         ifnull(cfid.account,"0") as "accountDetail",
         a.program_id,
         a.type as 'recordType',
-        (case when a.type = '1' then (select group_concat(pr.is_pre_invoice) from cw_project_records pr where pr.id = a.program_id)
+        (case when a.type = '1' then (select pr.is_pre_invoice from cw_project_records pr where pr.id = a.program_id)
         else '' end ) as isPreInvoice,
         (case when a.type = '1' then
-        (select group_concat(is_complete_invoice) from cw_project_report pr where pr.project_id = a.program_id)
+        (select is_complete_invoice from cw_project_report pr where pr.project_id = a.program_id)
         else '' end) as isCompleteInvoice
         from cw_finance_invoice_base a
         left join cw_finance_invoice fi on a.invoice_id = fi.id
@@ -560,11 +560,9 @@
         select
         DISTINCT
         <include refid="Base_Column_List"></include>,
-        su.name as createName,
-        fid.number as "number"
+        su.name as createName
         from cw_finance_invoice fi
         left join cw_finance_invoice_base fib on fib.invoice_id = fi.id
-        left join cw_finance_invoice_detail fid on fi.id = fid.invoice_id
         left join sys_user su on fi.create_by_id = su.id
         ${ew.customSqlSegment}
     </select>

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

@@ -866,7 +866,7 @@ public class CwFinanceInvoiceService extends ServiceImpl<CwFinanceInvoiceMapper,
 
         for (CwFinanceInvoiceDTO record : list.getRecords()) {
             // 如果发票编号不在strings集合中,则添加到filteredList
-            if (!uniqueInvoiceNumbers.contains(record.getNumber())){
+            if (!uniqueInvoiceNumbers.contains(record.getNo())){
                 filteredList.add(record);
             }
         }

+ 1 - 2
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/CwProjectRecordsMapper.xml

@@ -417,8 +417,7 @@
         cw_wci.payer_subject,
         cw_wci.payment_method,
         cw_wcb.name as clientContactsName,
-        cw_pbt.name as business_type_name,
-        new_line.report_no as reportNo
+        cw_pbt.name as business_type_name
         from cw_project_records a
         left join sys_user su on su.id = a.create_by_id and su.del_flag = '0'
         left join cw_work_contract_info cw_wci on cw_wci.id = a.contract_id and cw_wci.del_flag = '0'

+ 14 - 7
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/CwProjectRecordsService.java

@@ -470,23 +470,30 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
         IPage<CwProjectRecordsDTO> list = cwProjectRecordsMapper.findPreInvoiceList(page, queryWrapper);
         List<CwProjectRecordsDTO> recordsToKeep = new ArrayList<>();
         Set<String> projectIdsWithPendingReports = new HashSet<>();
+        List<String> recordsToRemove = new ArrayList<>();
         //查询出未关联完成的项目,完成替换
         for (CwProjectRecordsDTO record : list.getRecords()) {
             List<CwProjectReportData> reportData = cwProjectReportMapper.getByProjectId(record.getId());
             if (CollectionUtils.isNotEmpty(reportData)) {
-                for (CwProjectReportData reportDatum : reportData) {
-                    //报告号申请未完成的项目
-                    if (!"5".equals(reportDatum.getApplyStatus())) {
-                        // 如果找到一个状态不是 "5" 的报告,则将该记录的ID添加到集合中
+                for (CwProjectReportData data : reportData) {
+                    if ("2".equals(data.getIsCompleteInvoice())) {
+                        // 保存到待处理的proId中
                         projectIdsWithPendingReports.add(record.getId());
-                        break; // 不需要继续检查其他报告
-                    }
+                        recordsToRemove.add(record.getId());
+                        continue; // 如果一个报告已完成,就跳出循环,不再检查其他报告
+                    } else if (!"5".equals(data.getApplyStatus())) {//报告号申请未完成的项目
+                            // 如果找到一个状态不是 "5" 的报告,则将该记录的ID添加到集合中
+                            if (ObjectUtil.isNotEmpty(record)){
+                                projectIdsWithPendingReports.add(record.getId());
+                            }
+                        }
+
                 }
             }else {
                 projectIdsWithPendingReports.add(record.getId());
             }
         }
-
+        list.getRecords().removeIf(record -> recordsToRemove.contains(record.getId()));
         // 根据集合中的ID来过滤出需要保留的records
         for (CwProjectRecordsDTO record : list.getRecords()) {
             if (projectIdsWithPendingReports.contains(record.getId())) {

+ 12 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportController.java

@@ -861,6 +861,18 @@ public class CwProjectReportController {
         return data;
     }
 
+    /**
+     * 根据发票编号查询报告
+     * @param id
+     * @return
+     */
+    @ApiLog("根据发票编号查询报告")
+    @GetMapping("getByInvoiceNumber")
+    public boolean getByInvoiceNumber(@RequestParam("invoiceNumber") String invoiceNumber) {
+        boolean data = projectReportService.getByInvoiceNumber ( invoiceNumber );
+        return data;
+    }
+
 
 
 }

+ 2 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/CwProjectReportMapper.java

@@ -248,4 +248,6 @@ public interface CwProjectReportMapper extends BaseMapper<CwProjectReport> {
     void updatesigStatusById(CwProjectReport report);
 
     void updateCompleteInvoice(@Param("id") String id);
+
+    CwProjectReportData getByInvoiceNumber(@Param("invoiceNumber")String invoiceNumber);
 }

+ 32 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportMapper.xml

@@ -278,7 +278,8 @@
         a.register_address,
         a.business_location,
         a.security_business,
-        a.invoice_number,
+        (case when a.invoice_number is null then fi.no
+         else a.invoice_number end) as invoiceNumber,
         a.is_complete_invoice,
         cw_prs1.proc_ins_id as proc_ins_id1,
         cw_prs1.process_definition_id as process_definition_id1,
@@ -337,6 +338,8 @@
         LEFT JOIN sys_user su1 on a.signature_annotator1 = su1.id
         LEFT JOIN sys_user su2 on a.signature_annotator2 = su2.id
         LEFT JOIN sys_user su3 on a.real_create = su3.id
+        left join cw_finance_invoice_base fib on a.id = fib.program_id
+        left join cw_finance_invoice fi on fib.invoice_id = fi.id
         where a.id = #{id}
     </select>
 
@@ -644,6 +647,7 @@
         left join cw_project_report_new_line new_line on a.id = new_line.report_id and new_line.del_flag = '0'
         left join cw_project_report_number_apply na on a.id = na.report_id and na.del_flag = '0'
         where a.project_id = #{projectId} and a.del_flag = '0'
+        order by a.create_time DESC
     </select>
     <select id="getContainDelByProjectId" resultType="com.jeeplus.finance.projectReport.domain.CwProjectReportData">
         SELECT
@@ -1182,6 +1186,33 @@
         update cw_project_report set is_complete_invoice = '2' where id = #{id}
     </update>
 
+    <select id="getByInvoiceNumber" resultType="com.jeeplus.finance.projectReport.domain.CwProjectReportData">
+        select
+            a.id,
+            a.create_by_id as createById,
+            a.create_time,
+            a.update_by_id,
+            a.update_time,
+            a.del_flag,
+            a.remarks,
+            a.status,
+            a.document_no,
+            a.project_report_number,
+            a.project_id,
+            a.office_id,
+            a.signature_type,
+            a.signature_annotator1,
+            a.signature_annotator2,
+            a.signature_contract_id,
+            a.real_create,
+            a.proc_ins_id,
+            a.process_definition_id,
+            a.signature_annotator_status
+        from cw_project_report a
+        left join cw_project_report_number_apply rna on a.id = rna.report_id and rna.del_flag = '0'
+        where rna.review_status not in ('0','1') and a.invoice_number = #{invoiceNumber}
+    </select>
+
 
 
 </mapper>

+ 17 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportService.java

@@ -15,6 +15,7 @@ import com.jeeplus.common.TokenProvider;
 import com.jeeplus.common.constant.CacheNames;
 import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.finance.invoice.mapper.CwFinanceInvoiceMapper;
 import com.jeeplus.finance.invoice.util.SignaturePostUtil;
 import com.jeeplus.finance.projectRecords.domain.CwProjectRecords;
 import com.jeeplus.finance.projectRecords.service.CwProjectRecordsService;
@@ -122,6 +123,9 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
     @Resource
     private CwRevocationSignatureMapper cwRevocationSignatureMapper;
 
+    @Resource
+    private CwFinanceInvoiceMapper cwFinanceInvoiceMapper;
+
 
     /**
      * 保存项目以及其他相关信息
@@ -4586,4 +4590,17 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         }
         return false;
     }
+
+    /**
+     * 根据发票编号查询报告
+     * @param invoiceNumber
+     * @return
+     */
+    public boolean getByInvoiceNumber(String invoiceNumber) {
+        CwProjectReportData reportData = reportMapper.getByInvoiceNumber(invoiceNumber);
+        if (ObjectUtil.isNotEmpty(reportData)){
+            return true;
+        }
+        return false;
+    }
 }