diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/SuppInvoiceCmd.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/SuppInvoiceCmd.java index c5034c54fb399ff4ce27bc6e9d42e2340962e9eb..743a9a1aa42da17b431540c0d3a87dc42b01aa03 100644 --- a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/SuppInvoiceCmd.java +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/SuppInvoiceCmd.java @@ -19,8 +19,10 @@ import java.util.List; @NoArgsConstructor @Data public class SuppInvoiceCmd { + private Long invoiceId; @ApiModelProperty(value = "鍥炲崟id") private Long incomeId; + private String repairProject; @ApiModelProperty(value = "鍙戠エ绫诲瀷") private String billType; @ApiModelProperty(value = "鍙戠エ鍙风爜") diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/IncomeTypeQry.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/IncomeTypeQry.java new file mode 100644 index 0000000000000000000000000000000000000000..7d14164a4a90402c763d5366129eace8c2bb0a63 --- /dev/null +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/IncomeTypeQry.java @@ -0,0 +1,8 @@ +package com.seasky.ledgerincome.application.query.dto; + +import lombok.Data; + +@Data +public class IncomeTypeQry { + public Long id; +} diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/BaseSetController.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/BaseSetController.java index f872324380253596e74d9dd95ef629e0d913ae7d..8a835f97169eb1e0120abd97cedf4b8b8986e52d 100644 --- a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/BaseSetController.java +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/BaseSetController.java @@ -4,6 +4,7 @@ import com.seasky.core.common.Result; import com.seasky.ledgerincome.application.command.dto.*; import com.seasky.ledgerincome.application.query.dto.AllocationRuleQry; import com.seasky.ledgerincome.application.query.dto.AuthQry; +import com.seasky.ledgerincome.application.query.dto.IncomeTypeQry; import com.seasky.ledgerincome.application.query.dto.ProjectTypeQry; import com.seasky.ledgerincome.application.query.dto.out.*; import io.swagger.annotations.Api; @@ -82,5 +83,7 @@ public interface BaseSetController { @ApiOperation("鏀舵绫诲瀷-鏌ヨ鍒楄〃") @PostMapping("pc/v1/getIncomeList") Result<IncomeTypeOut> getIncomeList(); - + @ApiOperation("鏀舵绫诲瀷-鏌ヨ鍒楄〃") + @PostMapping("pc/v1/getIncomeInfo") + Result<IncomeTypeOut> getIncomeInfo(@RequestBody IncomeTypeQry qry); } 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 db4ed903c285b1cf7534aa96db67bc76f054a8c3..ae8f98aca5dc7e1d5b5683941c02096e7edb9b45 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 @@ -9,6 +9,7 @@ import com.ql.util.express.ExpressRunner; import com.ql.util.express.Operator; 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.assembler.IncomeAssembler; import com.seasky.ledgerincome.application.command.assembler.VchDetailAssembler; @@ -35,6 +36,7 @@ import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.lang.reflect.Field; @@ -66,6 +68,9 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income IncomeInvoiceQueryService incomeInvoiceQueryService; @Autowired EntryBillRepository entryBillRepository; + @Autowired + EntryCommandService entryCommandService; + @Override public void automaticIncomeType(List<ReceiptBillCmd> receiptBillCmdList) { if(receiptBillCmdList == null || receiptBillCmdList.isEmpty()){ @@ -95,7 +100,27 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income incomeRepository.saveIncomeList(pos); } } - + public JSONObject getVoucherRpc(String voucherCode,Date voucherDate){ + String path=propertyUtil.getInnerInterfacePath(); + String secret = propertyUtil.getSecret(); + String systemid=propertyUtil.getSystemid(); + if(Objects.isNull(path)) throw ExceptionUtil.getException(null, "璇烽厤缃唴閮ㄦ帴鍙e湴鍧€锛�"); + if(Objects.isNull(secret)) throw ExceptionUtil.getException(null, "璇烽厤缃唴閮ㄦ帴鍙ecret锛�"); + if(Objects.isNull(systemid)) throw ExceptionUtil.getException(null, "璇烽厤缃唴閮ㄦ帴鍙ystemid锛�"); + String url = path+ "/Help/Api/POST-BudgetLedgerInterface-GetVoucherInfo"; + LocalDateTime currentDate = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH"); + String formattedDate = currentDate.plusHours(1).format(formatter); + HashMap<String,Object> map = new HashMap<>(); + map.put("SystemID",systemid); + String token=systemid+"|"+formattedDate+"|"+secret; + map.put("Token", StringToMd5Hash.toMD5(token)); + map.put("VoucherFendNo",voucherCode); + map.put("VoucherDate",voucherDate); + String s = HttpClientUtil.doPostJson(url, JSONObject.toJSONString(map)); + JSONObject stationObj = JSONObject.parseObject(s); + return stationObj; + } @Override public void changeWrongAccount(ChangeWrongAccountCmd cmd) { IncomeAggregate incomeAggregate=findById(cmd.getIncomeId()); @@ -122,28 +147,9 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income incomeAggregate.changePreIncome(cmd.getPreIncomeType()); save(incomeAggregate); } - public JSONObject getVoucherRpc(String voucherCode,Date voucherDate){ - String path=propertyUtil.getInnerInterfacePath(); - String secret = propertyUtil.getSecret(); - String systemid=propertyUtil.getSystemid(); - if(Objects.isNull(path)) throw ExceptionUtil.getException(null, "璇烽厤缃唴閮ㄦ帴鍙e湴鍧€锛�"); - if(Objects.isNull(secret)) throw ExceptionUtil.getException(null, "璇烽厤缃唴閮ㄦ帴鍙ecret锛�"); - if(Objects.isNull(systemid)) throw ExceptionUtil.getException(null, "璇烽厤缃唴閮ㄦ帴鍙ystemid锛�"); - String url = path+ "/Help/Api/POST-BudgetLedgerInterface-GetVoucherInfo"; - LocalDateTime currentDate = LocalDateTime.now(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH"); - String formattedDate = currentDate.plusHours(1).format(formatter); - HashMap<String,Object> map = new HashMap<>(); - map.put("SystemID",systemid); - String token=systemid+"|"+formattedDate+"|"+secret; - map.put("Token", StringToMd5Hash.toMD5(token)); - map.put("VoucherFendNo",voucherCode); - map.put("VoucherDate",voucherDate); - String s = HttpClientUtil.doPostJson(url, JSONObject.toJSONString(map)); - JSONObject stationObj = JSONObject.parseObject(s); - return stationObj; - } + @Override + @Transactional public void incomeAllocation(IncomeAllocationCmd cmd) { IncomeAggregate incomeAggregate=findById(cmd.getIncomeId()); if(cmd.getIncomeTypeName().equals(IncomeSpeedEnum.寰呰棰�.getValue())) @@ -154,7 +160,7 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income //杩涘害鐘舵€侊細瀹屾垚 if(cmd.getEntryMode().equals(EntryModeEnum.鍏宠仈.getValue())) { - JSONObject json = getVoucherRpc(cmd.getVoucherNo(),cmd.getVoucherDate()); + JSONObject json =getVoucherRpc(cmd.getVoucherNo(),cmd.getVoucherDate()); if(!json.getBooleanValue("isSuccess")){ throw new RuntimeException("璋冪敤鍑瘉鎺ュ彛error:"+json.getString("errorMessage")); } @@ -169,13 +175,19 @@ public class IncomeCommandServiceImpl extends BaseCommandAbstractService<Income List<Long> invoiceIds = incomeInvoiceQueryService.findPreInvoiceIdsWith(cmd.getIncomeId()); String entryType = entryBillRepository.queryEntryType(cmd.getIncomeId(),Arrays.asList(EntryTypeEnum.鍒版杞殏瀛�.getValue())); if(invoiceIds == null || invoiceIds.isEmpty()){ - + EntryTempCmd entryTempCmd=new EntryTempCmd(); + entryTempCmd.setIncomeId(cmd.getIncomeId()); + entryTempCmd.setVoucherCode(cmd.getVoucherNo()); + entryTempCmd.setVoucherDate(cmd.getVoucherDate()); if(StringUtils.isEmpty(entryType)) { //鍒版杞敹鍏� + entryCommandService.entryIncome(entryTempCmd); }else { //鏆傚瓨杞敹鍏� + + entryCommandService.entryTemp(entryTempCmd); } }else { 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 c5717c2d71b5d3e0583f8015a82f5eeb68151409..5c243a2c7ff7fe1171f04ce4b9e48e75c06084ae 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 @@ -449,41 +449,40 @@ public class InvoiceCommandServieceImpl extends BaseCommandAbstractService<Invoi if(Objects.isNull(preInvoiceCmd.getInvoiceId())) { InvoiceAggergate aggergate = InvoiceAssembler.toInvoiceAggergate(preInvoiceCmd); invoiceId = invoiceRepository.save(aggergate); - }else{ + }else { //淇濆瓨鍙戠エ鏀舵 - IncomeInvoiceAggregate incomeInvoiceAggregate=new IncomeInvoiceAggregate(null,preInvoiceCmd.getIncomeId(),preInvoiceCmd.getInvoiceId(), + IncomeInvoiceAggregate incomeInvoiceAggregate = new IncomeInvoiceAggregate(null, preInvoiceCmd.getIncomeId(), preInvoiceCmd.getInvoiceId(), InvoiceTypeEnum.棰勫紑绁�.getValue()); incomeInvoiceRepository.save(incomeInvoiceAggregate); - } - - //2.淇濆瓨鍑瘉 - JSONObject json = getVoucherRpc(preInvoiceCmd.getVoucherCode(),preInvoiceCmd.getVoucherDate()); - if(!json.getBooleanValue("isSuccess")){ - throw new RuntimeException("璋冪敤鍑瘉鎺ュ彛error:"+json.getString("errorMessage")); + //2.淇濆瓨鍑瘉 + JSONObject json = getVoucherRpc(preInvoiceCmd.getVoucherCode(), preInvoiceCmd.getVoucherDate()); + if (!json.getBooleanValue("isSuccess")) { + throw new RuntimeException("璋冪敤鍑瘉鎺ュ彛error:" + json.getString("errorMessage")); + } + String outOrderNo = json.getString("outOrderNo"); + JSONArray array = json.getJSONArray("voucherDetails"); + List<VchDetailEntity> vchDetailList = VchDetailAssembler.jsonArrayToEntity(array); + VoucherAggregate voucherAggregate = new VoucherAggregate(outOrderNo, null, preInvoiceCmd.getVoucherDate(), + preInvoiceCmd.getVoucherCode(), null, VoucherStateEnum.棰勫紑绁�.getValue(), vchDetailList); + Long voucherId = voucherRepository.save(voucherAggregate); + //3 淇濆瓨鍏ヨ处 + //鍏堝幓鏌gg + EntryBillAggregate entryBillAggregate = entryBillRepository.findByIncomeId(preInvoiceCmd.getIncomeId()); + List<EntryBillFlowEntity> flowEntityList = new ArrayList<>(); + flowEntityList.add(new EntryBillFlowEntity(null, null, new Date(), + EntryTypeEnum.getByValue(EntryTypeEnum.鏈埌娆�.getValue()), + InvoiceTypeEnum.getByValue(InvoiceTypeEnum.棰勫紑绁�.getValue()), + preInvoiceCmd.getIncomeId(), + Arrays.asList(invoiceId), voucherId + )); + entryBillAggregate = new EntryBillAggregate( + entryBillAggregate.getEntryBillId(), preInvoiceCmd.getIncomeId(), null, null, + VoucherStateEnum.getByValue(VoucherStateEnum.棰勫紑绁�.getValue()) + , flowEntityList + ); + entryBillRepository.save(entryBillAggregate); } - String outOrderNo = json.getString("outOrderNo"); - JSONArray array = json.getJSONArray("voucherDetails"); - List<VchDetailEntity> vchDetailList = VchDetailAssembler.jsonArrayToEntity(array); - VoucherAggregate voucherAggregate = new VoucherAggregate(outOrderNo,null,preInvoiceCmd.getVoucherDate(), - preInvoiceCmd.getVoucherCode(),null, VoucherStateEnum.棰勫紑绁�.getValue(),vchDetailList); - Long voucherId = voucherRepository.save(voucherAggregate); - //3 淇濆瓨鍏ヨ处 - //鍏堝幓鏌gg - EntryBillAggregate entryBillAggregate = entryBillRepository.findByIncomeId(preInvoiceCmd.getIncomeId()); - List<EntryBillFlowEntity> flowEntityList = new ArrayList<>(); - flowEntityList.add(new EntryBillFlowEntity(null,null,new Date(), - EntryTypeEnum.getByValue(EntryTypeEnum.鏈埌娆�.getValue()), - InvoiceTypeEnum.getByValue(InvoiceTypeEnum.棰勫紑绁�.getValue()), - preInvoiceCmd.getIncomeId(), - Arrays.asList(invoiceId),voucherId - )); - entryBillAggregate = new EntryBillAggregate( - entryBillAggregate.getEntryBillId(),preInvoiceCmd.getIncomeId(),null,null, - VoucherStateEnum.getByValue(VoucherStateEnum.棰勫紑绁�.getValue()) - ,flowEntityList - ); - entryBillRepository.save(entryBillAggregate); } @Transactional @@ -494,33 +493,42 @@ public class InvoiceCommandServieceImpl extends BaseCommandAbstractService<Invoi if(!incomeAggregate.getReceiptBillVo().getIncomeSpeed().equals(IncomeSpeedEnum.瀹屾垚.getValue())){ throw ExceptionUtil.getException(null,"闈炲凡瀹屾垚鐨勫洖鍗曚笉鍏佽琛ュ紑鍙戠エ"); } + Long invoiceId=cmd.getInvoiceId(); //1.淇濆瓨鍙戠エ - InvoiceAggergate aggergate = InvoiceAssembler.toSuppInvoiceAggergate(cmd); - aggergate.setIsSend("鏄�"); - aggergate.setInvoiceState("鏄�"); - Long invoiceId = invoiceRepository.save(aggergate); - //2 TODO 鍏ヨ处瑙勫垯 鐢熸垚鍑瘉 - Long voucherId = null; - - - //3 淇濆瓨鍏ヨ处 - //鍏堝幓鏌gg - EntryBillAggregate entryBillAggregate = entryBillRepository.findByIncomeId(cmd.getIncomeId()); - String entryType = entryBillRepository.queryEntryType(cmd.getIncomeId(),Arrays.asList(EntryTypeEnum.鏆傚瓨杞敹鍏�.getValue(),EntryTypeEnum.鍒版杞敹鍏�.getValue())); - List<EntryBillFlowEntity> flowEntityList = new ArrayList<>(); - flowEntityList.add(new EntryBillFlowEntity(null,null,new Date(), - EntryTypeEnum.getByValue(entryType), - InvoiceTypeEnum.getByValue(InvoiceTypeEnum.琛ュ紑绁�.getValue()), - cmd.getIncomeId(), - Arrays.asList(invoiceId),voucherId - )); - entryBillAggregate = new EntryBillAggregate( - entryBillAggregate.getEntryBillId(),cmd.getIncomeId(),null,null, - VoucherStateEnum.getByValue(VoucherStateEnum.宸插叆璐�.getValue()) - ,flowEntityList - ); - entryBillRepository.save(entryBillAggregate); - + if(Objects.isNull(cmd.getInvoiceId())) { + InvoiceAggergate aggergate = InvoiceAssembler.toSuppInvoiceAggergate(cmd); + aggergate.setIsSend("鏄�"); + aggergate.setInvoiceState("鏄�"); + invoiceId = invoiceRepository.save(aggergate); + //淇濆瓨鍙戠エ鏀舵 + IncomeInvoiceAggregate incomeInvoiceAggregate = new IncomeInvoiceAggregate(null, cmd.getIncomeId(), invoiceId.toString(), + InvoiceTypeEnum.琛ュ紑绁�.getValue()); + incomeInvoiceRepository.save(incomeInvoiceAggregate); + incomeAggregate.changeRepairProject(cmd.getRepairProject()); + incomeRepository.save(incomeAggregate); + }else { + //2 TODO 鍏ヨ处瑙勫垯 鐢熸垚鍑瘉 + Long voucherId = null; + + + //3 淇濆瓨鍏ヨ处 + //鍏堝幓鏌gg + EntryBillAggregate entryBillAggregate = entryBillRepository.findByIncomeId(cmd.getIncomeId()); + String entryType = entryBillRepository.queryEntryType(cmd.getIncomeId(), Arrays.asList(EntryTypeEnum.鏆傚瓨杞敹鍏�.getValue(), EntryTypeEnum.鍒版杞敹鍏�.getValue())); + List<EntryBillFlowEntity> flowEntityList = new ArrayList<>(); + flowEntityList.add(new EntryBillFlowEntity(null, null, new Date(), + EntryTypeEnum.getByValue(entryType), + InvoiceTypeEnum.getByValue(InvoiceTypeEnum.琛ュ紑绁�.getValue()), + cmd.getIncomeId(), + Arrays.asList(invoiceId), voucherId + )); + entryBillAggregate = new EntryBillAggregate( + entryBillAggregate.getEntryBillId(), cmd.getIncomeId(), null, null, + VoucherStateEnum.getByValue(VoucherStateEnum.宸插叆璐�.getValue()) + , flowEntityList + ); + entryBillRepository.save(entryBillAggregate); + } } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/assembler/IncomeAssembler.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/assembler/IncomeAssembler.java index 81e77fbcf9b5011397a189d13c68bc33253c923a..55b6157db037503c555c4fa78e44df2b378d7547 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/assembler/IncomeAssembler.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/command/assembler/IncomeAssembler.java @@ -44,4 +44,5 @@ public class IncomeAssembler { po.setPreIncomeType(incomeType); return po;*/ } + } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/query/api/IncomeTypeQueryService.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/query/api/IncomeTypeQueryService.java index 9ed7545badecbdfa93e74d728a83ef46adb5920c..258d02d8ae4c32db5bae2ef55b37a2b4dbbfed4f 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/query/api/IncomeTypeQueryService.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/query/api/IncomeTypeQueryService.java @@ -2,6 +2,7 @@ package com.seasky.ledgerincome.application.query.api; import com.seasky.ledgerincome.application.query.dto.AllocationRuleQry; import com.seasky.ledgerincome.application.query.dto.AuthQry; +import com.seasky.ledgerincome.application.query.dto.IncomeTypeQry; import com.seasky.ledgerincome.application.query.dto.out.AllocationRuleModifyOut; import com.seasky.ledgerincome.application.query.dto.out.AllocationRuleOut; import com.seasky.ledgerincome.application.query.dto.out.AuthOut; @@ -25,5 +26,5 @@ public interface IncomeTypeQueryService { List<IncomeTypeOut> getIncomeList(); List<IncomeTypeOut> getIncomeListForImport(); - + IncomeTypeOut getIncomeInfo(IncomeTypeQry qry); } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/domain/aggregate/income/IncomeAggregate.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/domain/aggregate/income/IncomeAggregate.java index bef3ad10317fae5268a530b9d022dc3edf68ba43..8d4e3bcfe09dd2d0f06b56d1a3a75633e8b6d32a 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/domain/aggregate/income/IncomeAggregate.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/domain/aggregate/income/IncomeAggregate.java @@ -69,7 +69,10 @@ public class IncomeAggregate extends BaseAggregate { this.receiptBillVo.incomeTypeName=incomeTypeName; this.incomeProject=incomeProject; } - +public void changeRepairProject(String repairProject) +{ + this.receiptBillVo.repairProject=repairProject; +} public void changePreIncomeConfirm() { this.receiptBillVo.setIncomeSpeed(IncomeSpeedEnum.鍙戝竷.getValue()); diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/reader/IncomeTypeQueryServiceImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/reader/IncomeTypeQueryServiceImpl.java index 9e81a1c85a5693d4d95871736036dc86f38617dd..3e5910d74ac8c383cc4054ad95897ed67b9f63ec 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/reader/IncomeTypeQueryServiceImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/reader/IncomeTypeQueryServiceImpl.java @@ -8,12 +8,12 @@ import com.seasky.core.ddd.utils.MapperUtils; import com.seasky.ledgerincome.application.query.api.IncomeTypeQueryService; import com.seasky.ledgerincome.application.query.dto.AllocationRuleQry; import com.seasky.ledgerincome.application.query.dto.AuthQry; -import com.seasky.ledgerincome.application.query.dto.out.AllocationRuleModifyOut; -import com.seasky.ledgerincome.application.query.dto.out.AllocationRuleOut; -import com.seasky.ledgerincome.application.query.dto.out.AuthOut; -import com.seasky.ledgerincome.application.query.dto.out.IncomeTypeOut; +import com.seasky.ledgerincome.application.query.dto.IncomeTypeQry; +import com.seasky.ledgerincome.application.query.dto.out.*; import com.seasky.ledgerincome.infrastructure.mapper.api.IncomeTypeMapper; +import com.seasky.ledgerincome.infrastructure.po.BankAccountNumberPo; import com.seasky.ledgerincome.infrastructure.po.IncomeTypePo; +import com.seasky.ledgerincome.infrastructure.repository.convert.BankAccountNumberConvert; import com.seasky.ledgerincome.utils.RuleUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -126,6 +126,17 @@ public class IncomeTypeQueryServiceImpl implements IncomeTypeQueryService { List<IncomeTypeOut> outs = inComeTypeMapper.findIncomeList(); return outs; } + + @Override + public IncomeTypeOut getIncomeInfo(IncomeTypeQry qry) { + QueryWrapper<IncomeTypePo> queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("id",qry.getId()); + IncomeTypePo incomeTypePo=inComeTypeMapper.selectOne(queryWrapper); + if(incomeTypePo==null) + return new IncomeTypeOut(); + return MapperUtils.INSTANCE.map(IncomeTypeOut.class, incomeTypePo); + } + // 鐢熸垚鐩爣瀛楃涓� private String generateTargetString(String rules) { if(StringUtils.isEmpty(rules)) diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/AccountEntryManageControllerImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/AccountEntryManageControllerImpl.java index efb9690634b211c9864e8aab17925bb624483074..f707d4901bb6adb34a4b263615433a47647b968c 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/AccountEntryManageControllerImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/AccountEntryManageControllerImpl.java @@ -86,7 +86,8 @@ public class AccountEntryManageControllerImpl extends BaseControllerImpl implem @Override public Result<Object> incomeAllocation(IncomeAllocationCmd cmd) { - return null; + incomeCommandService.incomeAllocation(cmd); + return Response.success(); } @Override public Result<IncomeTypeOut> getAuthIncomeList() { diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/BaseSetControllerImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/BaseSetControllerImpl.java index d0162b5db8cbb99d4a6059f27c4544270e3bebd4..6f8a978e636c46027f901a0a88a7f92237385867 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/BaseSetControllerImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/BaseSetControllerImpl.java @@ -10,6 +10,7 @@ import com.seasky.ledgerincome.application.query.api.IncomeTypeQueryService; import com.seasky.ledgerincome.application.query.api.ProjectTypeQueryService; import com.seasky.ledgerincome.application.query.dto.AllocationRuleQry; import com.seasky.ledgerincome.application.query.dto.AuthQry; +import com.seasky.ledgerincome.application.query.dto.IncomeTypeQry; import com.seasky.ledgerincome.application.query.dto.ProjectTypeQry; import com.seasky.ledgerincome.application.query.dto.out.*; import com.seasky.ledgerincome.infrastructure.service.api.IncomeService; @@ -137,5 +138,10 @@ public class BaseSetControllerImpl implements BaseSetController { return ok(ResponseCode.SUCCESS,incomeList); } + @Override + public Result<IncomeTypeOut> getIncomeInfo(IncomeTypeQry qry) { + return null; + } + } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/BudgetProjectControllerImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/BudgetProjectControllerImpl.java index 2076b972774a71fc04c98e832d90fe333b8419a8..61751b0648736a8606d0117d6601bce8315e390e 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/BudgetProjectControllerImpl.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/BudgetProjectControllerImpl.java @@ -18,6 +18,14 @@ public class BudgetProjectControllerImpl implements BudgetProjectController { BudgetProjectQueryService budgetProjectQueryService; @Override public Result<BudgetProjectOut> getBudgetProjectList(BudgetProjectQry qry) { + + qry.setProjectCode(qry.getProjectCode().contains("*")? qry.getProjectCode().replace("*","_"): + qry.getProjectCode()); + if(qry.getProjectCode().contains("*")) + { + qry.setPageIndex(1); + qry.setPageSize(Integer.MAX_VALUE); + } Pagination<BudgetProjectOut> list=budgetProjectQueryService.getBudgetProjectList(qry); return ok(ResponseCode.SUCCESS, list); } diff --git a/WebSite/src/api/Common.js b/WebSite/src/api/Common.js index cee759cdfc3a69cae6b84d8cd68450bcf158f3ce..cf4f6732e7964671888be41af6bfc5c7201b77be 100644 --- a/WebSite/src/api/Common.js +++ b/WebSite/src/api/Common.js @@ -16,5 +16,13 @@ class Common { data }); } + static async getBudgetProjectList(data) { + return await request({ + url: 'budgetProject/getBudgetProjectList', + method: 'post', + data + }); + } + } export default Common; diff --git a/WebSite/src/api/IncomeType.js b/WebSite/src/api/IncomeType.js index 165508541ab2a8b273972a88ec648b60a47dca96..68df9c761618c9f10945455424b72affef275a8d 100644 --- a/WebSite/src/api/IncomeType.js +++ b/WebSite/src/api/IncomeType.js @@ -65,5 +65,20 @@ class IncomeType{ data }); } + static async getProjectInfo(data) { + return await request({ + url: 'baseset/pc/v1/getProjectInfo', + method: 'post', + data + }); + } + static async getIncomeInfo(data) { + return await request({ + url: 'baseset/pc/v1/getIncomeInfo', + method: 'post', + data + }); + } + } export default IncomeType; \ No newline at end of file diff --git a/WebSite/src/api/Invoice.js b/WebSite/src/api/Invoice.js index a416851c59323375ee26a1e64f9a07fa8952cad9..0246a84498761bf678e7328dc75a6897f98e78a2 100644 --- a/WebSite/src/api/Invoice.js +++ b/WebSite/src/api/Invoice.js @@ -55,5 +55,21 @@ class Invoice{ data }); } + + static async preInvoice(data) { + return await request({ + url: 'invoice/preInvoice', + method: 'post', + data + }); + } + + static async suppInvoice(data) { + return await request({ + url: 'invoice/suppInvoice', + method: 'post', + data + }); + } } export default Invoice \ No newline at end of file diff --git a/WebSite/src/views/common/createmodifyinvoice.vue b/WebSite/src/views/common/createmodifyinvoice.vue index 1c91f688e226797c649c1a0a5c3e059435a5b856..89dfd225e6200e31106103e75fb3f778b1ba8ecc 100644 --- a/WebSite/src/views/common/createmodifyinvoice.vue +++ b/WebSite/src/views/common/createmodifyinvoice.vue @@ -7,11 +7,27 @@ width="100%" v-model="visible" v-if="visible"> + <el-form v-if="saveInvoiceCmd.billNo!==''" :inline="true" + class="demo-form-inline"> + <el-form-item label="鍥炲崟鍗曞彿" > + {{ billNo }} + </el-form-item> + <el-form-item label="琛ュ紑椤圭洰" v-if="saveInvoiceCmd.incomeId!=''"> + <el-input style="width:75%;" + clearable + v-model.trim="saveInvoiceCmd.repairProject" + placeholder="琛ュ紑椤圭洰" + ><template #append> + <el-button icon="el-icon-search" @click="choiceProject" /> + </template></el-input> + </el-form-item> + </el-form> <el-form :inline="true" class="demo-form-inline" > + <el-form-item label="鍙戠エ绫诲瀷" > <el-select style="width: 95%;" v-model="saveInvoiceCmd.billType" @@ -247,14 +263,17 @@ setup(props,context){ applyOrgName:'', invoiceType:props.invoicePara.invoiceType, invoiceId:props.invoicePara.invoiceId, - invoiceDetailCmdList:[] + invoiceDetailCmdList:[], + incomeId:props.invoicePara.incomeId, + repairProject:'' }, visible:props.invoicePara.visible, title:props.invoicePara.title, billTypeList:[], deptPara:{ visible:false - } + }, + billNo:props.invoicePara.billNo }); // 鏂板涓€琛� @@ -384,6 +403,29 @@ const saveCMInvoice=()=>{ }); if(!isSave) return; +if(data.saveInvoiceCmd.invoiceType=='棰勫紑绁�' && data.saveInvoiceCmd.invoiceId=="" ) +{ + Invoice.preInvoice(data.saveInvoiceCmd).then((rs)=>{ + if (rs.code!='00000') { + return ElNotification.warning(rs.description); + } + context.emit('update:visible',false); + context.emit('closeQuery'); + }) .catch(err => { + return ElNotification.error(err); + }); +}else if(data.saveInvoiceCmd.invoiceType=='琛ュ紑绁�' && data.saveInvoiceCmd.invoiceId=="") +{ + Invoice.suppInvoice(data.saveInvoiceCmd).then((rs)=>{ + if (rs.code!='00000') { + return ElNotification.warning(rs.description); + } + context.emit('update:visible',false); + context.emit('closeQuery'); + }) .catch(err => { + return ElNotification.error(err); + }); +}else{ Invoice.saveInvoice(data.saveInvoiceCmd).then((rs)=>{ if (rs.code!='00000') { return ElNotification.warning(rs.description); @@ -393,6 +435,7 @@ const saveCMInvoice=()=>{ }) .catch(err => { return ElNotification.error(err); }); + } } const choiceDeptment=()=>{ data.deptPara.visible=true; diff --git a/WebSite/src/views/preinvoice/index.vue b/WebSite/src/views/preinvoice/index.vue index 17464d7e4b5fb5a18d7fcadaf52b7a84948aa6ae..18313d6fc1a0d04d3eb613618346c54ffa9972cd 100644 --- a/WebSite/src/views/preinvoice/index.vue +++ b/WebSite/src/views/preinvoice/index.vue @@ -141,7 +141,6 @@ style="width: 100%" :height="maxHeight" highlight-current-row - @row-click="selectRowChange" @selection-change="handleSelectionChange" > <el-table-column type="selection" show-overflow-tooltip label="鎿嶄綔" @@ -267,7 +266,9 @@ setup(){ visible:false, title:'鏂板棰勫紑鍙戠エ', invoiceType:'棰勫紑绁�', - invoiceId:'' + invoiceId:'', + billNo:'', + incomeId:'' }, fileList:[] }); diff --git a/WebSite/src/views/srincomequery/components/incomeallocation.vue b/WebSite/src/views/srincomequery/components/incomeallocation.vue index d088e14f37d486f97d397d551ca9c9a03deac235..1f02dd6951f77c849cde82cea29c5be7cafa5ada 100644 --- a/WebSite/src/views/srincomequery/components/incomeallocation.vue +++ b/WebSite/src/views/srincomequery/components/incomeallocation.vue @@ -17,6 +17,7 @@ style="width: 100%;" v-model="incomeAllocationCmd.incomeTypeId" placeholder="璇烽€夋嫨" + @change="incomeTypeChange" > <el-option v-for="item in incomeTypeList" @@ -53,7 +54,7 @@ <el-select clearable v-model="incomeAllocationCmd.projectTypeId" - placeholder="璇烽€夋嫨" + placeholder="璇烽€夋嫨" @change="changeProject" > <el-option v-for="item in projectTypeList" @@ -113,6 +114,7 @@ import { onMounted, reactive, toRefs } from 'vue'; import IncomeType from '@/api/IncomeType'; import AccountEntryManage from '@/api/AccountEntryManage'; import { ElMessage,ElNotification } from 'element-plus'; +import Common from '@/api/Common'; export default { name: 'incomeallocation', emits: ['closeIncomeAllocation', 'update:visible'], @@ -135,6 +137,7 @@ export default { billNo: props.incomeAllocationPara.billNo, incomeTypeList: [], projectTypeList: [], + projectList:[], isSupplement: false, entryModeList: [ { key: '鍏ヨ处', value: '鍏ヨ处' }, @@ -152,15 +155,19 @@ export default { data.incomeTypeList = rs.data; data.incomeTypeList.push({ id: '', incomeTypeName: '寰呰棰�' }); }); - IncomeType.projectTypeList({incomeTypeId:data.incomeAllocationCmd.incomeTypeId}).then((rs) => { + + }); + const changeProject=()=>{ + IncomeType.projectTypeList({incomeTypeId:data.incomeAllocationCmd.incomeTypeId}).then((rs) => { if (rs.code != '00000') { return ElNotification.warning(rs.description); } data.projectTypeList = rs.data; }); - }); + } + const closeIncomeAllocation = () => { - context.emit('update:visible', false); + context.emit('update:visible', false); }; const saveIncomeAllocation=()=>{ if(data.incomeAllocationCmd.incomeTypeId.length==0) @@ -196,10 +203,38 @@ export default { } } } + const getProject=()=>{ + const project={projectCode:''}; + IncomeType.getProjectInfo({id:data.incomeAllocationCmd.projectTypeId}).then((rs)=>{ + if (rs.code != '00000') { + return ElNotification.warning(rs.description); + } + project.projectCode=rs.data; + }).then(()=>{ + Common.getProject(project).then((res)=>{ + if (res.code != '00000') { + return ElNotification.warning(res.description); + } + data.projectList=res.data; + }) + }); + + } + const incomeTypeChange=()=>{ + IncomeType.getIncomeInfo({id:data.incomeAllocationCmd.incomeTypeId}).then((rs) => { + if (rs.code != '00000') { + return ElNotification.warning(rs.description); + } + data.isSupplement = rs.data=='鏄�'?true:false; + }); + } return { ...toRefs(data), closeIncomeAllocation, - saveIncomeAllocation + saveIncomeAllocation, + changeProject, + incomeTypeChange, + getProject }; }, }; diff --git a/WebSite/src/views/srincomequery/index.vue b/WebSite/src/views/srincomequery/index.vue index 1f65360b95c6256c137d8a52f039381c530d2290..f3e2c29870815d28012e396d1ee3815635c77194 100644 --- a/WebSite/src/views/srincomequery/index.vue +++ b/WebSite/src/views/srincomequery/index.vue @@ -198,12 +198,12 @@ <el-table-column label="浜ゆ槗鏃ユ湡" ><template v-slot="slot"> - <span class="ellipsisclass">{{ slot.row.incomeDate }}</span> + <span class="ellipsisclass">{{ configdate(slot.row.incomeDate) }}</span> </template></el-table-column > <el-table-column label="閲戦" ><template v-slot="slot"> - <span class="ellipsisclass">{{ slot.row.incomeAmount }}</span> + <span class="ellipsisclass">{{currency(slot.row.incomeAmount) }}</span> </template></el-table-column > <el-table-column label="鏀舵璐︽埛" @@ -314,7 +314,7 @@ </template> <script> -import { onMounted, reactive, toRefs } from 'vue'; +import { onMounted, reactive, toRefs,getCurrentInstance } from 'vue'; import IncomeType from '@/api/IncomeType'; import BankAccountNumber from '@/api/BankAccountNumber'; import Income from '@/api/Income'; @@ -444,12 +444,23 @@ setup(){ // } data.incomeAllocationPara.visible=true; } + //**閲戦鏍煎紡鍖� **/ + const { proxy } = getCurrentInstance(); + const configdate = value => { + if (value == null) return value; + else return proxy.$formatDate(value, 'yyyy-MM-dd'); + }; + const currency = value => { + return proxy.$currency(value, ''); + }; return{ ...toRefs(data), incomeQuery, selectRowChange, changeWrongAccountAjust, - incomeAllocation + incomeAllocation, + configdate, + currency } } } diff --git a/WebSite/src/views/srincomesupplementinvoice/index.vue b/WebSite/src/views/srincomesupplementinvoice/index.vue index e6530cd57eb184b38e8fb7090b07b674bad11cdf..72deff9265c874a9c9290545eee4e4ad77585621 100644 --- a/WebSite/src/views/srincomesupplementinvoice/index.vue +++ b/WebSite/src/views/srincomesupplementinvoice/index.vue @@ -123,6 +123,11 @@ style="width:155px;" v-model="queryMod.endAmount" @click="queryIncomeSupplementInvoice" >鏌ヨ</el-button > + <el-button + type="primary" + @click="incomeSupplementInvoice" + >琛ュ紑鍙戠エ</el-button + > </el-form-item> </el-form> </div> @@ -134,11 +139,9 @@ style="width:155px;" v-model="queryMod.endAmount" style="width: 100%" :height="maxHeight" highlight-current-row + @row-click="selectRowChange" > - <el-table-column show-overflow-tooltip label="鎿嶄綔" - > - </el-table-column - > + <el-table-column label="鍥炲崟鍗曞彿" ><template v-slot="slot"> <span class="ellipsisclass">{{ slot.row.billNo }}</span> @@ -229,7 +232,8 @@ style="width:155px;" v-model="queryMod.endAmount" v-model:limit="queryMod.pageSize" @pagination="queryIncomeSupplementInvoice()" /> - + <CreateModifyInvoice :invoicePara="invoicePara" v-if="invoicePara.visible" + v-model:visible="invoicePara.visible" @closeQuery="queryIncomeSupplementInvoice"></CreateModifyInvoice> </div> </el-card> </div> @@ -240,8 +244,10 @@ import { onMounted, reactive, toRefs } from 'vue'; import LOBSupplement from '@/api/LOBSupplement'; import IncomeType from '@/api/IncomeType'; import BankAccountNumber from '@/api/BankAccountNumber'; +import CreateModifyInvoice from '../common/createmodifyinvoice.vue'; export default { name:'srincomesupplementinvoice', +components:{CreateModifyInvoice,Pagination}, setup(){ const data=reactive({ queryMod:{ @@ -263,6 +269,14 @@ setup(){ incomeSupplementInvoiceList:[], dataCount:0, maxHeight:window.innerHeight-355, + invoicePara:{ + visible:false, + title:'琛ュ紑绁�', + invoiceType:'琛ュ紑绁�', + invoiceId:'', + billNo:'', + incomeId:'' + } }) onMounted(()=>{ IncomeType.getIncomeList().then((res)=>{ @@ -286,6 +300,8 @@ setup(){ }); }) const queryIncomeSupplementInvoice=()=>{ + data.invoicePara.billNo=''; + data.invoicePara.incomeId=''; LOBSupplement.selectIncomeSupplementInvoicePage(data.queryMod).then((rs)=>{ if (rs.code!='00000') { return ElNotification.warning(rs.description); @@ -299,9 +315,19 @@ setup(){ }); } + const incomeSupplementInvoice=()=>{ + data.invoicePara.visible=true; + + } + const selectRowChange=(row)=>{ + data.invoicePara.billNo=row.billNo; + data.invoicePara.incomeId=row.incomeId; + } return{ ...toRefs(data), - queryIncomeSupplementInvoice + queryIncomeSupplementInvoice, + incomeSupplementInvoice, + selectRowChange } } } diff --git a/WebSite/src/views/srinvoicetackle/index.vue b/WebSite/src/views/srinvoicetackle/index.vue index 47291c1c23c1df1337d7d12684d8faf2d8b2d2b5..c6195dc3e446e8075c338b254add815dd4652ff9 100644 --- a/WebSite/src/views/srinvoicetackle/index.vue +++ b/WebSite/src/views/srinvoicetackle/index.vue @@ -130,7 +130,7 @@ > <el-table-column show-overflow-tooltip label="鎿嶄綔" width="125px;"> <template v-slot="slot"> - <el-button type="text" v-if="slot.row.isSend=='鍚�'" @click="invoiceDetailById(slot.row)">璋冩暣</el-button> + <el-button type="text" v-if="slot.row.isSend=='鍚�'" @click="invoiceAdjuest(slot.row)">璋冩暣</el-button> <el-button type="text" v-if="slot.row.isSend=='鍚�'" @click="invoiceDetailById(slot.row)">鍙戦€�</el-button> <el-button type="text" v-if="slot.row.isSend=='鍚�' && sow.row.invoiceType=='鍚屾寮€绁�'" @click="rejectInvoiceById(slot.row)">椹冲洖</el-button> <el-button type="text" v-if="slot.row.invoiceState=='宸插紑'" @click="invoiceDetailById(slot.row)">涓嬭浇</el-button> @@ -231,6 +231,8 @@ </el-card> <RejectInvoice v-if="rejectInvoicePara.visible" v-model:visible="rejectInvoicePara.visible" :rejectInvoicePara="rejectInvoicePara" @closeRejectInvoice="queryIncomeInvoide"></RejectInvoice> +<CreateModifyInvoice :invoicePara="invoicePara" v-if="invoicePara.visible" +v-model:visible="invoicePara.visible" @closeQuery="queryIncomeInvoide"></CreateModifyInvoice> </div> </template> @@ -241,9 +243,10 @@ import Emun from '@/api/Emun'; import AccountEntryManage from '@/api/AccountEntryManage'; import RejectInvoice from './components/rejectinvoice.vue'; import Pagination from 'element-plus/lib/el-pagination'; +import CreateModifyInvoice from '../common/createmodifyinvoice.vue'; export default { name:"srinvoicetackle", -components:{ Pagination,RejectInvoice}, +components:{ Pagination,RejectInvoice,CreateModifyInvoice}, setup(){ const data=reactive({ queryMod:{ @@ -267,6 +270,14 @@ setup(){ incomeId:'', invoiceId:'', visible:false + }, + invoicePara:{ + visible:false, + title:'', + invoiceType:'', + invoiceId:'', + billNo:'', + incomeId:'' } }); onMounted(()=>{ @@ -294,6 +305,13 @@ setup(){ queryIncomeInvoide(); }) const queryIncomeInvoide=()=>{ + data.rejectInvoicePara.incomeId=''; + data.rejectInvoicePara.invoiceId=''; + data.invoicePara.invoiceId=''; + data.invoicePara.title=''; + data.invoicePara.invoiceType=''; + data.invoicePara.invoiceId=''; + data.invoicePara.billNo=''; AccountEntryManage.selectInvoiceTacklePage(data.queryMod).then((rs)=>{ if (rs.code!='00000') { return ElNotification.warning(rs.description); @@ -309,10 +327,19 @@ data.rejectInvoicePara.incomeId=row.incomeId; data.rejectInvoicePara.invoiceId=row.invoiceId; data.rejectInvoicePara.visible=true; } + + const invoiceAdjuest=(row)=>{ + data.invoicePara.title=row.invoiceType+'璋冩暣'; + data.invoicePara.invoiceType=row.invoiceType; + data.invoicePara.invoiceId=row.id; + data.invoicePara.visible=true; + data.invoicePara.billNo=row.billNo; + } return { ...toRefs(data), queryIncomeInvoide, - rejectInvoiceById + rejectInvoiceById, + invoiceAdjuest } } }