From eb9f81699c055e20743d1e074a11f1b7bca74df8 Mon Sep 17 00:00:00 2001 From: jiangxiaoming <7548901@qq.com> Date: Wed, 18 Sep 2024 16:54:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=B9=E9=85=8D=E9=A2=84?= =?UTF-8?q?=E5=BC=80=E7=A5=A8=E5=8A=9F=E8=83=BD+=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E5=85=A5=E8=B4=A6=E6=89=B9=E9=87=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../command/dto/PreIncomeConfirmCmd.java | 3 ++- .../controller/api/EntryBillController.java | 8 ++++++++ .../command/EntryCommandServiceImpl.java | 2 +- .../command/IncomeCommandServiceImpl.java | 13 +++++++++++-- .../command/InvoiceCommandServieceImpl.java | 13 +++++++++++++ .../command/api/EntryCommandService.java | 1 + .../command/api/InvoiceCommandServiece.java | 4 +++- .../aggregate/invoice/InvoiceRepository.java | 4 ++++ .../mapper/api/InvoiceMapper.java | 11 +++++++++++ .../repository/InvoiceRepositoryImpl.java | 8 ++++++++ .../controller/EntryBillControllerImpl.java | 17 +++++++++++++++++ 11 files changed, 79 insertions(+), 5 deletions(-) diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/PreIncomeConfirmCmd.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/PreIncomeConfirmCmd.java index ba928039..ef23e332 100644 --- a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/PreIncomeConfirmCmd.java +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/PreIncomeConfirmCmd.java @@ -10,5 +10,6 @@ import java.util.List; public class PreIncomeConfirmCmd { @ApiModelProperty(value = "鏀舵id") public List<Long> incomeId; - + @ApiModelProperty(value = "鑷姩鍖归厤棰勫紑绁ㄥ姛鑳� true寮€鍚�") + private Boolean autoInvoice = false; } diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/EntryBillController.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/EntryBillController.java index ea6528e1..99d396db 100644 --- a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/EntryBillController.java +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/EntryBillController.java @@ -12,6 +12,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; import java.io.IOException; +import java.util.List; /** * @Author jxm @@ -29,6 +30,13 @@ public interface EntryBillController { @PostMapping("/storageTemp") Result<Object> storageTemp(@RequestParam("incomeId") Long incomeId); + @ApiImplicitParams({ + @ApiImplicitParam(name="incomeId",value="鍥炲崟ID",required=true) + }) + @ApiOperation("鏀舵鏆傚瓨锛堟壒閲忥級") + @PostMapping("/storageTempBatch") + Result<Object> storageTempBatch(@RequestBody Long[] incomeIds); + @ApiImplicitParams({ @ApiImplicitParam(name="incomeId",value="鍥炲崟ID",required=true) }) diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/EntryCommandServiceImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/EntryCommandServiceImpl.java index c3d72eb4..cc96c7ee 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/EntryCommandServiceImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/EntryCommandServiceImpl.java @@ -75,7 +75,7 @@ public class EntryCommandServiceImpl extends BaseControllerImpl implements Entry // 1鏌ヨ鍥炲崟 IncomeAggregate incomeAggregate = incomeRepository.findById(incomeId); if(incomeAggregate.getNeedInQuire()!=null && !incomeAggregate.getNeedInQuire()){ - throw ExceptionUtil.getException(null,"闈炲緟璁ら鐨勫洖鍗曚笉鍏佽鏆傚瓨鍏ヨ处"); + throw ExceptionUtil.getException(null,"闈炲緟璁ら鐨勫洖鍗曚笉鍏佽鏆傚瓨鍏ヨ处:"+incomeAggregate.getIncomeId()); } // 2 鍏ヨ处瑙勫垯鐢熸垚鍑瘉 VoucherAggregate voucherAggregate = voucherUtil.generateVoucher(incomeAggregate, "鍚�", VoucherStateApplyEnum.鐢宠涓�.getValue()); diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/IncomeCommandServiceImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/IncomeCommandServiceImpl.java index 6d4b094c..e5eceaae 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/IncomeCommandServiceImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/IncomeCommandServiceImpl.java @@ -11,6 +11,7 @@ import com.seasky.core.ddd.base.api.BaseCommandAbstractService; import com.seasky.core.util.ExceptionUtil; import com.seasky.ledgerincome.application.command.api.EntryCommandService; import com.seasky.ledgerincome.application.command.api.IncomeCommandService; +import com.seasky.ledgerincome.application.command.api.InvoiceCommandServiece; import com.seasky.ledgerincome.application.command.assembler.IncomeAssembler; import com.seasky.ledgerincome.application.command.assembler.InvoiceAssembler; import com.seasky.ledgerincome.application.command.assembler.VchDetailAssembler; @@ -91,6 +92,8 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income BankAccountNumberQueryService bankAccountNumberQueryService; @Autowired IncomeSpecialRepository incomeSpecialRepository; + @Autowired + InvoiceCommandServiece invoiceCommandServiece; @Override public void automaticIncomeType(List<ReceiptBillCmd> receiptBillCmdList) { if(receiptBillCmdList == null || receiptBillCmdList.isEmpty()){ @@ -147,10 +150,16 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income @Override public void preIncomeConfirm(PreIncomeConfirmCmd cmd) { + if(cmd.getIncomeId().size()>10){ + throw ExceptionUtil.getException(null,"鏈€澶氭壒閲�10鏉″洖鍗�"); + } for (Long item :cmd.getIncomeId()) { IncomeAggregate incomeAggregate = findById(item); incomeAggregate.changePreIncomeConfirm(); save(incomeAggregate); + if(cmd.getAutoInvoice()){ + invoiceCommandServiece.autoInvoiceIncome(incomeAggregate); + } } } @@ -248,7 +257,7 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income #2锛氬伐璧勮ˉ宸紝瀛樺湪灏嗘€婚噾棰濇媶鍒嗕负鍏昏€侀噾銆佸尰鐤椾繚闄┿€佸け涓氫繚闄┿€佸伐浼氫細璐圭殑鎯呭喌锛岄渶瑕佸仛鐗规畩澶勭悊 #3锛氬畾鏈熷瓨娆撅紝瀛樺湪灏嗘€婚噾棰濇媶鍒嗘湰閲戝拰鍒╂伅鐨勬儏鍐碉紝闇€瑕佸仛鐗规畩澶勭悊 **/ - if(cmd.getIncomeTypeName().equals("搴旂即璐㈡斂涓撴埛娆�" ) || cmd.getIncomeTypeName().equals("宸ヨ祫閫€鍥�") + if(cmd.getIncomeTypeName().equals("搴斾氦璐㈡斂涓撴埛娆�" ) || cmd.getIncomeTypeName().equals("宸ヨ祫閫€鍥�") || cmd.getIncomeTypeName().equals("瀹氭湡瀛樻")) { IncomeSpecialAggregate incomeSpecialAggregate=(Objects.isNull(cmd.getIncomeSpecialId())) @@ -257,7 +266,7 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income cmd.getUnemploymentInsurance(),cmd.getUnionDues(),cmd.getPrincipal(), cmd.getInterest(),cmd.getEducationFee(),cmd.getPositionSalary(), cmd.getSalaryScale(),cmd.getTransportationSubsidy(),cmd.getSalaryCompensation()):incomeSpecialRepository.findById(cmd.getIncomeSpecialId()); - if(cmd.getIncomeTypeName().equals("搴旂即璐㈡斂涓撴埛娆�")) + if(cmd.getIncomeTypeName().equals("搴斾氦璐㈡斂涓撴埛娆�")) { incomeSpecialAggregate.changeInfo(cmd.getHotelExpense(),cmd.getTuition(),cmd.getEducationFee()); } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/InvoiceCommandServieceImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/InvoiceCommandServieceImpl.java index 51da046a..7f0e199b 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/InvoiceCommandServieceImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/InvoiceCommandServieceImpl.java @@ -590,6 +590,19 @@ public class InvoiceCommandServieceImpl extends BaseCommandAbstractService<Invoi ThreadLocalUtil.remove("person"); } } + + @Override + public void autoInvoiceIncome(IncomeAggregate aggregate) { + // 鏍规嵁璐拱鏂瑰拰閲戦鍖归厤 + BigDecimal incomeAmount = aggregate.getIncomeAmount(); + String accountName = aggregate.getInComeAccount().getAccountName(); + IncomeInvoiceAggregate incomeInvoiceAggregate = invoiceRepository.findInvoice(incomeAmount,accountName); + if(incomeInvoiceAggregate!=null){ + incomeInvoiceAggregate.setIncomeId(aggregate.getIncomeId()); + incomeInvoiceRepository.save(incomeInvoiceAggregate); + } + } + private Map<Integer, String> checkImport(List<InvoiceTemplate> list){ Map<Integer, String> resMap = new HashMap<>(); List<String> stringList = list.stream().map(t -> { diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/api/EntryCommandService.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/api/EntryCommandService.java index 20131d75..bc3e0a50 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/api/EntryCommandService.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/api/EntryCommandService.java @@ -33,4 +33,5 @@ public interface EntryCommandService { void complete(CompleteIncomeCmd cmd); void downloadVoucherPDF(Long incomeId) throws IOException, DocumentException; + } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/api/InvoiceCommandServiece.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/api/InvoiceCommandServiece.java index 19e7a192..3aa3f363 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/api/InvoiceCommandServiece.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/api/InvoiceCommandServiece.java @@ -2,6 +2,7 @@ package com.seasky.ledgerincome.application.command.api; import com.seasky.core.common.Result; import com.seasky.ledgerincome.application.command.dto.*; +import com.seasky.ledgerincome.domain.aggregate.income.IncomeAggregate; import com.seasky.ledgerincome.interfaces.controller.excel.InvoiceTemplate; import javax.validation.Valid; @@ -24,5 +25,6 @@ public interface InvoiceCommandServiece { void suppInvoice(SuppInvoiceCmd cmd); - + // 棰勫垎閰嶇‘璁ゅ姛鑳戒腑锛屽鍔犱竴涓嚜鍔ㄥ尮閰嶉寮€绁ㄥ姛鑳斤紝鑰佸笀鐐逛竴涓嬩箣鍚庯紝鍙互鏍规嵁瀵规柟璐﹀彿锛岄噾棰濊嚜鍔ㄥ叧鑱斿埌鏀舵鍥炲崟涓� + void autoInvoiceIncome(IncomeAggregate aggregate); } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/domain/aggregate/invoice/InvoiceRepository.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/domain/aggregate/invoice/InvoiceRepository.java index ca324e4c..f3104ab9 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/domain/aggregate/invoice/InvoiceRepository.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/domain/aggregate/invoice/InvoiceRepository.java @@ -2,9 +2,11 @@ package com.seasky.ledgerincome.domain.aggregate.invoice; import com.seasky.core.ddd.base.api.BaseRepository; import com.seasky.ledgerincome.domain.aggregate.example.ExampleAggregate; +import com.seasky.ledgerincome.domain.aggregate.incomeinvoice.IncomeInvoiceAggregate; import com.seasky.ledgerincome.infrastructure.po.InvoiceDetailPo; import com.seasky.ledgerincome.infrastructure.po.InvoicePo; +import java.math.BigDecimal; import java.util.List; public interface InvoiceRepository extends BaseRepository<InvoiceAggergate> { @@ -15,4 +17,6 @@ public interface InvoiceRepository extends BaseRepository<InvoiceAggergate> { void removeListByInvoiceIds(List<Long> invoiceIds); List<String> checkInvoice(List<String> stringList); + + IncomeInvoiceAggregate findInvoice(BigDecimal incomeAmount, String accountName); } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/mapper/api/InvoiceMapper.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/mapper/api/InvoiceMapper.java index 1559b5a7..d877d86f 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/mapper/api/InvoiceMapper.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/mapper/api/InvoiceMapper.java @@ -5,6 +5,7 @@ import com.seasky.core.base.BaseMapper; import com.seasky.ledgerincome.application.query.dto.InvoiceDownQry; import com.seasky.ledgerincome.application.query.dto.InvoicePreQry; import com.seasky.ledgerincome.application.query.dto.InvoiceQry; +import com.seasky.ledgerincome.domain.aggregate.incomeinvoice.IncomeInvoiceAggregate; import com.seasky.ledgerincome.infrastructure.po.InvoiceDetailPo; import com.seasky.ledgerincome.infrastructure.po.InvoicePo; import com.seasky.ledgerincome.infrastructure.po.InvoiceSpecificsPo; @@ -12,6 +13,7 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.mapstruct.Mapper; +import java.math.BigDecimal; import java.util.List; @Mapper @@ -39,4 +41,13 @@ public interface InvoiceMapper extends BaseMapper<InvoicePo> { String selectInvoiceRemark(@Param("incomeId") Long incomeId, @Param("value")String value); String selectInvoiceNo(@Param("incomeId") Long incomeId); + + @Select("SELECT a.invoice_type as invoiceType, a.id as invoiceId " + + "FROM t_invoice a " + + "LEFT JOIN t_invoice_detail b ON a.id = b.invoice_id " + + "WHERE a.buyer_name = #{buyerName} " + + "GROUP BY a.id " + + "HAVING SUM(b.amount) = #{incomeAmount} " + + "AND NOT EXISTS (SELECT 1 FROM t_income_invoice c WHERE c.invoice_id = a.id and c.available = 'YES')") + IncomeInvoiceAggregate findInvoice(@Param("incomeAmount")BigDecimal incomeAmount, @Param("buyerName") String buyerName); } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/repository/InvoiceRepositoryImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/repository/InvoiceRepositoryImpl.java index f0282dba..c04e956d 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/repository/InvoiceRepositoryImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/repository/InvoiceRepositoryImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.seasky.ledgerincome.application.command.assembler.InvoiceAssembler; import com.seasky.ledgerincome.domain.aggregate.example.ExampleAggregate; +import com.seasky.ledgerincome.domain.aggregate.incomeinvoice.IncomeInvoiceAggregate; import com.seasky.ledgerincome.domain.aggregate.invoice.InvoiceAggergate; import com.seasky.ledgerincome.domain.aggregate.invoice.InvoiceRepository; import com.seasky.ledgerincome.infrastructure.mapper.api.InvoiceDetailMapper; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Repository; import javax.annotation.Resource; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -183,4 +185,10 @@ public class InvoiceRepositoryImpl implements InvoiceRepository { List<String> list = invoiceMapper.selectInvoiceExsitList(stringList); return list ; } + + @Override + public IncomeInvoiceAggregate findInvoice(BigDecimal incomeAmount, String accountName) { + IncomeInvoiceAggregate agg = invoiceMapper.findInvoice(incomeAmount,accountName); + return agg; + } } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/EntryBillControllerImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/EntryBillControllerImpl.java index 2f0b27be..6c8be34d 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/EntryBillControllerImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/EntryBillControllerImpl.java @@ -3,6 +3,7 @@ package com.seasky.ledgerincome.interfaces.controller; import com.itextpdf.text.DocumentException; import com.seasky.core.common.Response; import com.seasky.core.common.Result; +import com.seasky.core.util.ExceptionUtil; import com.seasky.ledgerincome.annotation.LogOperation; import com.seasky.ledgerincome.application.command.api.EntryCommandService; import com.seasky.ledgerincome.application.command.dto.EntryTempCmd; @@ -10,9 +11,12 @@ import com.seasky.ledgerincome.application.command.dto.SuppInvoiceCmd; import com.seasky.ledgerincome.application.query.api.FileQueryService; import com.seasky.ledgerincome.interfaces.controller.api.EntryBillController; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; +import java.util.Arrays; +import java.util.List; /** * @Author jxm @@ -32,6 +36,19 @@ public class EntryBillControllerImpl implements EntryBillController { entryCommandService.storageTemp(incomeId); return Response.success(); } + @Transactional + @Override + public Result<Object> storageTempBatch(Long[] incomeIds) { + if(incomeIds == null){ + throw ExceptionUtil.getException(null,"鏆傚瓨鎵归噺鍏ヨ处鍙傛暟涓虹┖"); + } + List<Long> list = Arrays.asList(incomeIds); + list.forEach(id->{ + entryCommandService.storageTemp(id); + }); + return Response.success(); + } + @LogOperation("鍏ヨ处鐢宠-鏆傚瓨杞敹鍏�") @Override public Result<Object> entryTemp(EntryTempCmd cmd) { -- GitLab