From de77aef206ed488bc4a5348695e2d6442364a362 Mon Sep 17 00:00:00 2001 From: jiangxiaoming <jiangxiaoming@seaskysh.com> Date: Mon, 30 Dec 2024 15:02:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A4=E9=A2=86=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/enums/ApprovalStateEnum.java | 1 + .../enums/BoardAndLodgingTypeEnum.java | 5 +- .../seasky/template/enums/ClaimTypeEnum.java | 31 ++++++++++ .../template/enums/InvoiceTypeEnum.java | 32 ++++++++++ .../api/IOutSideApplyInvoiceController.java | 4 ++ .../dto/request/ClaimArrivalInvoiceSave.java | 38 ++++++++++++ .../dto/request/ClaimArrivalProjectSave.java | 32 ++++++++++ .../dto/request/ClaimArrivalSaveRequest.java | 29 +++++++++ .../dto/result/ClaimUponArrivalResult.java | 9 +++ .../template/business/api/ClaimService.java | 3 + .../dao/mapper/IncomeClaimMapper.java | 11 ++++ .../business/dao/mapper/InvoiceMapper.java | 2 + .../business/dao/xml/IncomeMapper.xml | 59 ++++++++----------- .../business/dao/xml/InvoiceMapper.xml | 8 +++ .../template/business/entity/IncomeClaim.java | 34 +++++++++++ .../business/entity/IncomeInvoice.java | 21 +++++++ .../business/service/ClaimServiceImpl.java | 56 ++++++++++++++++++ .../business/service/IncomeServiceImpl.java | 57 ++++++++++++++---- .../OutSideApplyInvoiceController.java | 11 ++-- 19 files changed, 392 insertions(+), 51 deletions(-) create mode 100644 ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/ClaimTypeEnum.java create mode 100644 ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/InvoiceTypeEnum.java create mode 100644 ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalInvoiceSave.java create mode 100644 ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalProjectSave.java create mode 100644 ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalSaveRequest.java create mode 100644 ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/mapper/IncomeClaimMapper.java create mode 100644 ServiceSiteCommon/src/main/java/com/seasky/template/business/entity/IncomeClaim.java diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/ApprovalStateEnum.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/ApprovalStateEnum.java index a828366..d6a0344 100644 --- a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/ApprovalStateEnum.java +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/ApprovalStateEnum.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +// 璁ら鐘舵€�&瀹℃壒鐘舵€� public enum ApprovalStateEnum { 寰呮彁浜�("寰呮彁浜�","寰呮彁浜�"), 宸叉彁浜�("宸叉彁浜�","宸叉彁浜�"), diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/BoardAndLodgingTypeEnum.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/BoardAndLodgingTypeEnum.java index 339c001..e6f41f8 100644 --- a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/BoardAndLodgingTypeEnum.java +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/BoardAndLodgingTypeEnum.java @@ -4,10 +4,13 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +//鍩硅绫诲瀷 public enum BoardAndLodgingTypeEnum { 浼欓("浼欓","浼欓"), - 浣忓("浣忓","浣忓"); + 鏍″唴瀹胯垗("鏍″唴瀹胯垗","鏍″唴瀹胯垗"), + 鏍″瀹胯垗("鏍″瀹胯垗","鏍″瀹胯垗") + ; private final String value; private final String code; BoardAndLodgingTypeEnum(String value, diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/ClaimTypeEnum.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/ClaimTypeEnum.java new file mode 100644 index 0000000..e31123e --- /dev/null +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/ClaimTypeEnum.java @@ -0,0 +1,31 @@ +package com.seasky.template.enums; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +//鍩硅绫诲瀷 +public enum ClaimTypeEnum { + + 鍒拌处璁ら("鍒拌处璁ら","鍒拌处璁ら"), + 鍩硅璁ら("鍩硅璁ら","鍩硅璁ら") + ; + private final String value; + private final String code; + ClaimTypeEnum(String value, + String code + ) { + this.value = value; + this.code = code; + } + + public String getValue() { + return value; + } + public String getCode() { + return code; + } + public static List<String> getList() { + return Arrays.stream(ClaimTypeEnum.values()).map(t->{return t.getValue();}).collect(Collectors.toList()); + } +} diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/InvoiceTypeEnum.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/InvoiceTypeEnum.java new file mode 100644 index 0000000..27af001 --- /dev/null +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/enums/InvoiceTypeEnum.java @@ -0,0 +1,32 @@ +package com.seasky.template.enums; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +//寮€绁ㄧ被鍨� +public enum InvoiceTypeEnum { + + 棰勫紑绁�("棰勫紑绁�","棰勫紑绁�"), + 鐜板紑绁�("鐜板紑绁�","鐜板紑绁�"), + 绾夸笅棰勫紑绁�("绾夸笅棰勫紑绁�","绾夸笅棰勫紑绁�"), + ; + private final String value; + private final String code; + InvoiceTypeEnum(String value, + String code + ) { + this.value = value; + this.code = code; + } + + public String getValue() { + return value; + } + public String getCode() { + return code; + } + public static List<String> getList() { + return Arrays.stream(InvoiceTypeEnum.values()).map(t->{return t.getValue();}).collect(Collectors.toList()); + } +} diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/api/IOutSideApplyInvoiceController.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/api/IOutSideApplyInvoiceController.java index 4e7fe99..d45a553 100644 --- a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/api/IOutSideApplyInvoiceController.java +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/api/IOutSideApplyInvoiceController.java @@ -40,4 +40,8 @@ public interface IOutSideApplyInvoiceController { @PostMapping("/selectPreInvoiceList") Result<PreInvoiceInfoResult> selectPreInvoiceList(); + @ApiOperation("鍒拌处璁ら鎿嶄綔锛堟柊澧炴垨淇敼锛�") + @PostMapping("/claimArrival") + Result<Object> claimArrival(@Validated @RequestBody ClaimArrivalSaveRequest request); + } diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalInvoiceSave.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalInvoiceSave.java new file mode 100644 index 0000000..3bab09e --- /dev/null +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalInvoiceSave.java @@ -0,0 +1,38 @@ +package com.seasky.template.web.dto.request; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author jxm + * @Date 2024/12/30 10:19 + * @Version 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ClaimArrivalInvoiceSave { + @ApiModelProperty(value = "鏍规嵁id鏂板鎴栦慨鏀�") + private Long id; + @ApiModelProperty(value = "鍙戠エ绫诲瀷锛氶寮€绁紝鐜板紑绁紝绾夸笅棰勫紑绁�") + private String invoiceType; + @ApiModelProperty(value = "鍙戠エ閲戦") + private BigDecimal invoiceAmount; + @ApiModelProperty(value = "鍙戠エ绋庨") + private BigDecimal invoiceTaxAmount; + @ApiModelProperty(value = "鍥炲崟鍙�") + private String billNo; + @ApiModelProperty(value = "璐拱鏂�") + private String buyerName; + @ApiModelProperty(value = "璐熻矗浜�") + private String projectCharge; + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "鍙戠エ鏃ユ湡") + private Date invoiceDate; +} diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalProjectSave.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalProjectSave.java new file mode 100644 index 0000000..bce4a3c --- /dev/null +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalProjectSave.java @@ -0,0 +1,32 @@ +package com.seasky.template.web.dto.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @Author jxm + * @Date 2024/12/30 9:16 + * @Version 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +//鍒拌处璁ら椤圭洰淇℃伅 +public class ClaimArrivalProjectSave { + @ApiModelProperty(value = "鏍规嵁id鏂板鎴栦慨鏀�") + private Long id; + @ApiModelProperty(value = "椤圭洰缂栧彿") + private String projectCode; + @ApiModelProperty(value = "椤圭洰鍚嶇О") + private String projectName; + @ApiModelProperty(value = "璁ら閲戦") + private BigDecimal claimAmount; + @ApiModelProperty(value = "璁ら绫诲瀷锛氬埌璐﹁棰�/鍩硅璁ら") + private String claimType; + @ApiModelProperty(value = "椤圭洰璐熻矗浜�") + private String projectCharge; +} diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalSaveRequest.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalSaveRequest.java new file mode 100644 index 0000000..8e4fdc2 --- /dev/null +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/request/ClaimArrivalSaveRequest.java @@ -0,0 +1,29 @@ +package com.seasky.template.web.dto.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Author jxm + * @Date 2024/12/26 15:12 + * @Version 1.0 + */ +//鍒拌处璁ら鎿嶄綔瀹炰綋 +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ClaimArrivalSaveRequest { + @ApiModelProperty(value = "鍥炲崟id") + private Long incomeId; + @ApiModelProperty(value = "椤圭洰淇℃伅") + private List<ClaimArrivalProjectSave> projectList; + @ApiModelProperty(value = "棰勫紑绁╥dList") + private List<Long> preInvoiceList; + @ApiModelProperty(value = "鍏宠仈琛ㄥ彂绁ㄤ俊鎭�") + private List<ClaimArrivalInvoiceSave> invoiceList; + +} diff --git a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/result/ClaimUponArrivalResult.java b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/result/ClaimUponArrivalResult.java index 524be77..6d2cd81 100644 --- a/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/result/ClaimUponArrivalResult.java +++ b/ServiceSiteCommon/facade/src/main/java/com/seasky/template/web/dto/result/ClaimUponArrivalResult.java @@ -1,6 +1,8 @@ package com.seasky.template.web.dto.result; import com.fasterxml.jackson.annotation.JsonFormat; +import com.seasky.template.web.dto.request.ClaimArrivalInvoiceSave; +import com.seasky.template.web.dto.request.ClaimArrivalProjectSave; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; @@ -8,6 +10,7 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * @Author jxm @@ -31,4 +34,10 @@ public class ClaimUponArrivalResult { private String paymentName; @ApiModelProperty(value = "璇存槑") private String remark; + @ApiModelProperty(value = "椤圭洰淇℃伅") + private List<ClaimArrivalProjectSave> projectList; + @ApiModelProperty(value = "棰勫紑绁ㄤ俊鎭�") + private List<PreInvoiceInfoResult> preInvoiceList; + @ApiModelProperty(value = "鍏宠仈琛ㄥ彂绁ㄤ俊鎭紙绾夸笅棰勫紑绁級") + private List<ClaimArrivalInvoiceSave> invoiceList; } diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/api/ClaimService.java b/ServiceSiteCommon/src/main/java/com/seasky/template/business/api/ClaimService.java index 60c7248..a9d3bab 100644 --- a/ServiceSiteCommon/src/main/java/com/seasky/template/business/api/ClaimService.java +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/api/ClaimService.java @@ -1,5 +1,6 @@ package com.seasky.template.business.api; +import com.seasky.template.web.dto.request.ClaimArrivalSaveRequest; import com.seasky.template.web.dto.request.ClaimMenuRequest; import com.seasky.template.web.dto.result.OutSideIncomeTypeResult; @@ -12,4 +13,6 @@ import java.util.List; */ public interface ClaimService { List<OutSideIncomeTypeResult> findIncomeType(ClaimMenuRequest request); + + void saveOrUpdateClaim(ClaimArrivalSaveRequest request); } diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/mapper/IncomeClaimMapper.java b/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/mapper/IncomeClaimMapper.java new file mode 100644 index 0000000..ae7aaf0 --- /dev/null +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/mapper/IncomeClaimMapper.java @@ -0,0 +1,11 @@ +package com.seasky.template.business.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.seasky.template.business.entity.IncomeClaim; +import com.seasky.template.business.entity.IncomeInvoice; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface IncomeClaimMapper extends BaseMapper<IncomeClaim> { + +} diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/mapper/InvoiceMapper.java b/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/mapper/InvoiceMapper.java index c5cbe98..0151a8f 100644 --- a/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/mapper/InvoiceMapper.java +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/mapper/InvoiceMapper.java @@ -26,4 +26,6 @@ public interface InvoiceMapper extends BaseMapper<Invoice> { List<InvoicingQueryResult> applyInvoicePageList(Page page, @Param("qry") InvoicingQueryRequest qry); PreInvoiceInfoResult selectPreInvoiceList(); + + List<PreInvoiceInfoResult> selectPreInvoiceListWithIds(@Param("idList")List<Long> idList); } diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/xml/IncomeMapper.xml b/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/xml/IncomeMapper.xml index 37beb6e..dd917d1 100644 --- a/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/xml/IncomeMapper.xml +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/xml/IncomeMapper.xml @@ -41,6 +41,8 @@ <if test="cm.incomeAmountEnd!=null"> and a.income_amount <![CDATA[<=]]> #{cm.incomeAmountEnd} </if> + GROUP BY + a.id, a.bill_no, a.payment_name, a.income_amount, a.income_date, d.entry_mode; order by a.income_date desc </select> @@ -108,7 +110,7 @@ <select id ="selectClaimUponArrivalListPage" resultType="com.seasky.template.web.dto.result.ClaimUponArrivalResult"> SELECT - f.management_person, + GROUP_CONCAT(DISTINCT f.management_person ORDER BY f.management_person SEPARATOR ',') AS management_person, -- 鍚堝苟绠$悊浜哄憳涓洪€楀彿鍒嗛殧鐨勫瓧绗︿覆 d.entry_mode, a.id, a.bill_no, @@ -155,40 +157,29 @@ <select id="selectClaimUponArrivalByIncomeId" resultType="com.seasky.template.web.dto.result.ClaimUponArrivalResult"> SELECT - f.management_person, - d.entry_mode, - a.id, - a.bill_no, - a.payment_name, - a.income_amount, - a.income_date + GROUP_CONCAT(DISTINCT f.management_person ORDER BY f.management_person SEPARATOR ',') AS management_person, -- 鍚堝苟绠$悊浜哄憳涓洪€楀彿鍒嗛殧鐨勫瓧绗︿覆 + d.entry_mode, + a.id, + a.bill_no, + a.payment_name, + a.income_amount, + a.income_date FROM - t_income a - INNER JOIN - t_voucher b ON a.bill_no = b.out_order_no - AND b.available = 'YES' - AND b.voucher_type = '鎸傝处' - LEFT JOIN - t_income_type_income c ON c.income_id = a.id - AND c.available = 'YES' - LEFT JOIN - t_income_type d ON d.id = c.income_type_id - AND d.available = 'YES' - LEFT JOIN - t_income_type_department e ON e.income_type_id = d.id - LEFT JOIN - t_department f ON f.id = e.department_id - LEFT JOIN - t_income_claim g ON g.income_id = a.id + t_income a + INNER JOIN t_voucher b ON a.bill_no = b.out_order_no + AND b.available = 'YES' + AND b.voucher_type = '鎸傝处' + LEFT JOIN t_income_type_income c ON c.income_id = a.id + AND c.available = 'YES' + LEFT JOIN t_income_type d ON d.id = c.income_type_id + AND d.available = 'YES' + LEFT JOIN t_income_type_department e ON e.income_type_id = d.id + LEFT JOIN t_department f ON f.id = e.department_id + LEFT JOIN t_income_claim g ON g.income_id = a.id WHERE - a.available = 'YES' AND g.income_id IS NULL - AND ( - (d.entry_mode == '璐熻矗浜鸿棰�') - OR ( - d.entry_mode = '閮ㄩ棬璁ら' - AND f.management_person LIKE CONCAT('%', #{qry.userName}, '%') - ) - ) - and a.id = #{incomeId} + a.available = 'YES' + AND a.id = #{incomeId} + GROUP BY + a.id, a.bill_no, a.payment_name, a.income_amount, a.income_date, d.entry_mode </select> </mapper> diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/xml/InvoiceMapper.xml b/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/xml/InvoiceMapper.xml index f76c9ea..ccf7855 100644 --- a/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/xml/InvoiceMapper.xml +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/dao/xml/InvoiceMapper.xml @@ -249,4 +249,12 @@ left join t_income_invoice c on a.id=c.invoice_id and c.available = 'YES' where a.available = 'YES' and a.invoice_type = '棰勫紑绁�' and a.apply_state ='閫氳繃' and c.id is null </select> + + <select id = "selectPreInvoiceListWithIds" resultMap="selectPreInvoiceListMap"> + select a.id as invocieId,a.*,b.id as id ,b.* from t_invoice a left join t_invoice_detail b on a.id=b.invoice_id and b.available = 'YES' + where a.available = 'YES' and a.id in + <foreach collection="idList" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </select> </mapper> diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/entity/IncomeClaim.java b/ServiceSiteCommon/src/main/java/com/seasky/template/business/entity/IncomeClaim.java new file mode 100644 index 0000000..912506e --- /dev/null +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/entity/IncomeClaim.java @@ -0,0 +1,34 @@ +package com.seasky.template.business.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.seasky.core.base.BaseModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @Author jxm + * @Date 2024/12/30 10:56 + * @Version 1.0 + */ +@TableName("t_income_claim") +@AllArgsConstructor +@NoArgsConstructor +@Data +public class IncomeClaim extends BaseModel { + + private Long incomeId; + @ApiModelProperty(value = "椤圭洰缂栧彿") + private String projectCode; + @ApiModelProperty(value = "椤圭洰鍚嶇О") + private String projectName; + @ApiModelProperty(value = "璁ら閲戦") + private BigDecimal claim_amount; + @ApiModelProperty(value = "璁ら绫诲瀷锛氬埌璐﹁棰�/鍩硅璁ら") + private String claimType; + @ApiModelProperty(value = "椤圭洰璐熻矗浜�") + private String projectCharge; +} diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/entity/IncomeInvoice.java b/ServiceSiteCommon/src/main/java/com/seasky/template/business/entity/IncomeInvoice.java index 85c2eac..cfed988 100644 --- a/ServiceSiteCommon/src/main/java/com/seasky/template/business/entity/IncomeInvoice.java +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/entity/IncomeInvoice.java @@ -1,11 +1,16 @@ package com.seasky.template.business.entity; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.seasky.core.base.BaseModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.math.BigDecimal; +import java.util.Date; + /** * @Author jxm * @Date 2024/12/24 8:59 @@ -19,4 +24,20 @@ public class IncomeInvoice extends BaseModel { private Long incomeId; private Long invoiceId; + + @ApiModelProperty(value = "鍙戠エ绫诲瀷锛氶寮€绁紝鐜板紑绁紝绾夸笅棰勫紑绁�") + private String invoiceType; + @ApiModelProperty(value = "鍙戠エ閲戦") + private BigDecimal invoiceAmount; + @ApiModelProperty(value = "鍙戠エ绋庨") + private BigDecimal invoiceTaxAmount; + @ApiModelProperty(value = "鍥炲崟鍙�") + private String billNo; + @ApiModelProperty(value = "璐拱鏂�") + private String buyerName; + @ApiModelProperty(value = "璐熻矗浜�") + private String projectCharge; + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "鍙戠エ鏃ユ湡") + private Date invoiceDate; } diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/service/ClaimServiceImpl.java b/ServiceSiteCommon/src/main/java/com/seasky/template/business/service/ClaimServiceImpl.java index 8ce0c76..e38cd77 100644 --- a/ServiceSiteCommon/src/main/java/com/seasky/template/business/service/ClaimServiceImpl.java +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/service/ClaimServiceImpl.java @@ -1,7 +1,18 @@ package com.seasky.template.business.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.seasky.core.ddd.utils.MapperUtils; import com.seasky.template.business.api.ClaimService; +import com.seasky.template.business.dao.mapper.IncomeClaimMapper; +import com.seasky.template.business.dao.mapper.IncomeInvoiceMapper; import com.seasky.template.business.dao.mapper.IncomeTypeMapper; +import com.seasky.template.business.entity.IncomeClaim; +import com.seasky.template.business.entity.IncomeInvoice; +import com.seasky.template.enums.InvoiceEnum; +import com.seasky.template.enums.InvoiceTypeEnum; +import com.seasky.template.web.dto.request.ClaimArrivalInvoiceSave; +import com.seasky.template.web.dto.request.ClaimArrivalProjectSave; +import com.seasky.template.web.dto.request.ClaimArrivalSaveRequest; import com.seasky.template.web.dto.request.ClaimMenuRequest; import com.seasky.template.web.dto.result.OutSideIncomeTypeResult; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +30,10 @@ public class ClaimServiceImpl implements ClaimService { @Autowired IncomeTypeMapper incomeTypeMapper; + @Autowired + IncomeInvoiceMapper incomeInvoiceMapper; + @Autowired + IncomeClaimMapper incomeClaimMapper; @Override public List<OutSideIncomeTypeResult> findIncomeType(ClaimMenuRequest request) { String param = ""; @@ -34,4 +49,45 @@ public class ClaimServiceImpl implements ClaimService { List<OutSideIncomeTypeResult> resultList = incomeTypeMapper.findIncomeType(param); return resultList; } + + @Override + public void saveOrUpdateClaim(ClaimArrivalSaveRequest request) { + List<Long> preInvoiceList = request.getPreInvoiceList(); + if(preInvoiceList!=null && preInvoiceList.size()>0){ + //鍏堝垹闄ら寮€绁ㄥ叧鑱� + incomeInvoiceMapper.delete(new QueryWrapper<IncomeInvoice>(). + eq("income_id",request.getIncomeId()).eq("invoice_type", InvoiceTypeEnum.棰勫紑绁�.getValue())); + for (Long invoiceId : request.getPreInvoiceList()) { + IncomeInvoice incomeInvoice = new IncomeInvoice(); + incomeInvoice.setInvoiceId(invoiceId); + incomeInvoice.setIncomeId(request.getIncomeId()); + incomeInvoice.setInvoiceType(InvoiceTypeEnum.棰勫紑绁�.getValue()); + incomeInvoiceMapper.insert(incomeInvoice); + } + } + List<ClaimArrivalProjectSave> projectList = request.getProjectList(); + if(projectList!=null && projectList.size()>0){ + for (ClaimArrivalProjectSave projectSave : projectList) { + IncomeClaim incomeClaim = MapperUtils.INSTANCE.map(IncomeClaim.class, projectSave); + incomeClaim.setIncomeId(request.getIncomeId()); + if(projectSave.getId() == null){ + incomeClaimMapper.insert(incomeClaim); + }else{ + incomeClaimMapper.updateById(incomeClaim); + } + } + } + List<ClaimArrivalInvoiceSave> invoiceList = request.getInvoiceList(); + if(invoiceList!=null && invoiceList.size()>0){ + for (ClaimArrivalInvoiceSave invoiceSave : invoiceList) { + IncomeInvoice incomeInvoice = MapperUtils.INSTANCE.map(IncomeInvoice.class, invoiceSave); + incomeInvoice.setIncomeId(request.getIncomeId()); + if(invoiceSave.getId() == null){ + incomeInvoiceMapper.insert(incomeInvoice); + }else{ + incomeInvoiceMapper.updateById(incomeInvoice); + } + } + } + } } diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/business/service/IncomeServiceImpl.java b/ServiceSiteCommon/src/main/java/com/seasky/template/business/service/IncomeServiceImpl.java index c8c5d65..f4f3ccf 100644 --- a/ServiceSiteCommon/src/main/java/com/seasky/template/business/service/IncomeServiceImpl.java +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/business/service/IncomeServiceImpl.java @@ -1,6 +1,7 @@ package com.seasky.template.business.service; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seasky.core.base.AbstractService; import com.seasky.core.common.Pagination; @@ -9,22 +10,15 @@ import com.seasky.core.util.ExceptionUtil; import com.seasky.template.annotation.NullableField; import com.seasky.template.business.api.IncomeService; import com.seasky.template.business.api.VoucherService; -import com.seasky.template.business.dao.mapper.IncomeMapper; -import com.seasky.template.business.dao.mapper.IncomeTypeIncomeMapper; -import com.seasky.template.business.dao.mapper.IncomeVoucherMapper; -import com.seasky.template.business.dao.mapper.VoucherMapper; -import com.seasky.template.business.entity.Income; -import com.seasky.template.business.entity.IncomeTypeIncome; -import com.seasky.template.business.entity.IncomeVoucher; -import com.seasky.template.business.entity.Voucher; +import com.seasky.template.business.dao.mapper.*; +import com.seasky.template.business.entity.*; +import com.seasky.template.enums.ClaimTypeEnum; import com.seasky.template.enums.IncomeStateEnum; +import com.seasky.template.enums.InvoiceTypeEnum; import com.seasky.template.utils.UserInfoUtil; import com.seasky.template.utils.VoucherUtil; import com.seasky.template.web.dto.request.*; -import com.seasky.template.web.dto.result.ClaimUponArrivalResult; -import com.seasky.template.web.dto.result.DepartmentResult; -import com.seasky.template.web.dto.result.IncomeBindTypeResult; -import com.seasky.template.web.dto.result.UserInfoResult; +import com.seasky.template.web.dto.result.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -61,6 +55,12 @@ public class IncomeServiceImpl extends AbstractService<Income, IncomeMapper> imp VoucherService voucherService; @Autowired UserInfoUtil userInfoUtil; + @Autowired + IncomeClaimMapper incomeClaimMapper; + @Autowired + IncomeInvoiceMapper incomeInvoiceMapper; + @Autowired + private InvoiceMapper invoiceMapper; @Override public void add(IncomeSaveRequest saveRequest) { String orderNo = incomeMapper.selectExistOrderNo(saveRequest.getBillNo()); @@ -219,6 +219,39 @@ public class IncomeServiceImpl extends AbstractService<Income, IncomeMapper> imp @Override public ClaimUponArrivalResult selectClaimUponArrivalByIncomeId(Long incomeId) { ClaimUponArrivalResult result = incomeMapper.selectClaimUponArrivalByIncomeId(incomeId); + if(result == null){ + return result; + } + //1.鏌ヨ椤圭洰淇℃伅 + QueryWrapper<IncomeClaim> wrapper = new QueryWrapper<>(); + wrapper.eq("income_id",incomeId); + List<IncomeClaim> incomeClaimList = incomeClaimMapper.selectList(wrapper); + if(incomeClaimList!=null){ + List<ClaimArrivalProjectSave> claimArrivalProjectSaves = MapperUtils.INSTANCE.mapAsList(ClaimArrivalProjectSave.class, incomeClaimList); + result.setProjectList(claimArrivalProjectSaves); + } + //2.鏌ヨ绾夸笅棰勫紑绁ㄤ俊鎭� + QueryWrapper<IncomeInvoice> wrapper2 = new QueryWrapper<>(); + wrapper2.eq("income_id",incomeId); + wrapper2.eq("invoice_type", InvoiceTypeEnum.绾夸笅棰勫紑绁�.getValue()); + + List<IncomeInvoice> incomeInvoices = incomeInvoiceMapper.selectList(wrapper2); + if(incomeInvoices!=null){ + List<ClaimArrivalInvoiceSave> invoiceList = MapperUtils.INSTANCE.mapAsList(ClaimArrivalInvoiceSave.class, incomeInvoices); + result.setInvoiceList(invoiceList); + } + //3.鏌ヨ棰勫紑绁ㄤ俊鎭� + QueryWrapper<IncomeInvoice> wrapper3 = new QueryWrapper<>(); + wrapper3.eq("income_id", incomeId); + wrapper3.eq("invoice_type", InvoiceTypeEnum.棰勫紑绁�.getValue()); + List<IncomeInvoice> incomeInvoices2 = incomeInvoiceMapper.selectList(wrapper3); + if(incomeInvoices2!=null){ + List<Long> objectList = incomeInvoices2.stream().map(t -> { + return t.getInvoiceId(); + }).collect(Collectors.toList()); + List<PreInvoiceInfoResult> preInvoiceInfoResultList = invoiceMapper.selectPreInvoiceListWithIds(objectList); + result.setPreInvoiceList(preInvoiceInfoResultList); + } return result; } } diff --git a/ServiceSiteCommon/src/main/java/com/seasky/template/web/controller/OutSideApplyInvoiceController.java b/ServiceSiteCommon/src/main/java/com/seasky/template/web/controller/OutSideApplyInvoiceController.java index d9b06f1..e69e3d8 100644 --- a/ServiceSiteCommon/src/main/java/com/seasky/template/web/controller/OutSideApplyInvoiceController.java +++ b/ServiceSiteCommon/src/main/java/com/seasky/template/web/controller/OutSideApplyInvoiceController.java @@ -9,10 +9,7 @@ import com.seasky.template.business.api.InvoiceService; import com.seasky.template.business.dao.mapper.IncomeMapper; import com.seasky.template.utils.UserInfoUtil; import com.seasky.template.web.api.IOutSideApplyInvoiceController; -import com.seasky.template.web.dto.request.ClaimMenuRequest; -import com.seasky.template.web.dto.request.ClaimUponArrivalRequest; -import com.seasky.template.web.dto.request.InvoicingQueryRequest; -import com.seasky.template.web.dto.request.InvoicingQueryResult; +import com.seasky.template.web.dto.request.*; import com.seasky.template.web.dto.result.ClaimUponArrivalResult; import com.seasky.template.web.dto.result.OutSideIncomeTypeResult; import com.seasky.template.web.dto.result.PreInvoiceInfoResult; @@ -71,4 +68,10 @@ public class OutSideApplyInvoiceController extends BaseControllerImpl implements PreInvoiceInfoResult result = invoiceService.selectPreInvoiceList(); return ok(ResponseCode.SUCCESS,result); } + + @Override + public Result<Object> claimArrival(ClaimArrivalSaveRequest request) { + claimService.saveOrUpdateClaim(request); + return ok(ResponseCode.SUCCESS); + } } -- GitLab