Explorar el Código

解决开票管理导出时进账日期一致问题

Qchen hace 2 años
padre
commit
18d06bee81

+ 3 - 2
src/main/java/com/ydtech/modules/inv/dao/InvAccountIncoiceMapper.java

@@ -3,10 +3,9 @@ package com.ydtech.modules.inv.dao;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.inv.model.InvAccountIncoice;
 import com.ydtech.modules.inv.model.InvAccountIncoiceResult;
+import com.ydtech.modules.inv.model.InvAccountOperateResult;
 import com.ydtech.modules.inv.model.vo.InvAccountIncoiceQueryVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -38,5 +37,7 @@ int insertOrUpdateBatch(@Param("entities") List<InvAccountIncoice> entities);
 
 InvAccountIncoiceResult selectAccountIncoice(InvAccountIncoiceQueryVo invAccountIncoiceQueryVo);
 
+List<InvAccountOperateResult> selectAccountOperate(String invoiceId);
+
 }
 

+ 15 - 0
src/main/java/com/ydtech/modules/inv/model/InvAccountOperateResult.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.inv.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class InvAccountOperateResult {
+    @ApiModelProperty(value = "开票Id")
+    private Long invoiceId;
+
+    @ApiModelProperty("进账时间")
+    private LocalDateTime createTime;
+}

+ 14 - 12
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountIncoiceServiceImpl.java

@@ -29,6 +29,7 @@ import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -335,7 +336,7 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
 
         } else {
             LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-//            lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
+            lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
             lambdaQuery
                     .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getBiller()), InvAccountIncoice::getBiller, invAccountIncoiceQueryVo.getBiller())
                     .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
@@ -351,21 +352,22 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
                 lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeEnd().toString());
             }
             lambdaQuery.orderByDesc(InvAccountIncoice::getInvoiceTime);
-            list = invAccountOperateService.list(lambdaQueryWrapper);
-//            List<String> collect = list.stream().map(InvAccountOperate::getInvoiceId).collect(Collectors.toList());
-            //将开票id集合放入查询中
-//            if (!collect.isEmpty()) {
-//                lambdaQuery.in(InvAccountIncoice::getInvoiceId, collect);
                 invAccountIncoices = selectExcel(lambdaQuery, invAccountIncoiceQueryVo);
-//            }
         }
-
-
         //解决时间格式报错问题
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         invAccountIncoices.forEach(invAccountIncoice -> {
-            if (!list.isEmpty()){
-                DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                invAccountIncoice.setPayoutDate(dtf3.format(list.get(0).getCreateTime()));
+            List<InvAccountOperateResult> createTimeList =  invAccountIncoiceMapper.selectAccountOperate(invAccountIncoice.getInvoiceId());
+            if (createTimeList != null && !createTimeList.isEmpty()) {
+                for (InvAccountOperateResult result : createTimeList) {
+                    if (result.getCreateTime() == null) {
+                        invAccountIncoice.setPayoutDate("");
+                    } else {
+                        List<InvAccountOperateResult> sortedList = new ArrayList<>(createTimeList);
+                        sortedList.sort(Comparator.comparing(InvAccountOperateResult::getCreateTime).reversed());
+                        invAccountIncoice.setPayoutDate(createTimeList.get(0).getCreateTime().format(formatter).toString());
+                    }
+                }
             }
             if (invAccountIncoice.getInvoiceTime() != null) {
                 invAccountIncoice.setInvoiceDate(invAccountIncoice.getInvoiceTime().toString());

+ 6 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountOperateServiceImpl.java

@@ -90,6 +90,12 @@ public class InvAccountOperateServiceImpl extends ServiceImpl<InvAccountOperateM
             }
         }
         invAccountOperateIPage.setRecords(records);
+//        List<InvAccountOperate> recordsData = invAccountOperateIPage.getRecords();
+//        if (!recordsData.isEmpty()) {
+//            InvAccountOperate lastRecord = records.get(records.size() - 1);
+//            LocalDateTime lastCreateTime = lastRecord.getCreateTime();
+//            System.out.println(lastCreateTime);
+//        }
         return invAccountOperateIPage;
     }
 

+ 11 - 0
src/main/resources/mapper/modules/inv/InvAccountIncoiceMapper.xml

@@ -78,5 +78,16 @@ biller = values(biller) invoice_subjects = values(invoice_subjects) invoice_by =
         </if>
     </select>
 
+    <select id="selectAccountOperate" resultType="com.ydtech.modules.inv.model.InvAccountOperateResult">
+        SELECT a.invoice_id,
+               b.create_time
+        FROM inv_account_incoice a
+            left join inv_account_operate b
+                on a.invoice_id = b.invoice_id WHERE a.del_flag = '0'
+        <if test="invoiceId != null and invoiceId != '' ">
+            and a.invoice_id = #{invoiceId}
+        </if>
+    </select>
+
 </mapper>