src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,73 @@ package com.ruoyi.sales.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.sales.dto.InvoiceRegistrationDto; import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; import com.ruoyi.sales.service.InvoiceRegistrationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/invoiceRegistration") public class InvoiceRegistrationController { @Autowired private InvoiceRegistrationService invoiceRegistrationService; /** * å¼ç¥¨ç»è®°æ°å¢ * @param invoiceRegistrationDto * @return */ @PostMapping("/add") public AjaxResult invoiceRegistrationAdd(@RequestBody InvoiceRegistrationDto invoiceRegistrationDto) { invoiceRegistrationService.invoiceRegistrationAdd(invoiceRegistrationDto); return AjaxResult.success(); } /** * å¼ç¥¨ç»è®°å é¤ * @param ids * @return */ @DeleteMapping("/del") public AjaxResult invoiceRegistrationDel(List<Integer> ids) { invoiceRegistrationService.invoiceRegistrationDel(ids); return AjaxResult.success(); } /** * å¼ç¥¨è®°å½ä¿®æ¹ * @param invoiceRegistrationDto * @return */ @PostMapping("/update") public AjaxResult invoiceRegistrationUpdate(@RequestBody InvoiceRegistrationDto invoiceRegistrationDto) { invoiceRegistrationService.invoiceRegistrationUpdate(invoiceRegistrationDto); return AjaxResult.success(); } /** * å¼ç¥¨ç»è®°å页æ¥è¯¢ * @param page * @param invoiceRegistrationDto * @return */ @GetMapping("/listPage") public AjaxResult invoiceRegistrationListPage(Page page, InvoiceRegistrationDto invoiceRegistrationDto) { return AjaxResult.success(invoiceRegistrationService.invoiceRegistrationListPage(page, invoiceRegistrationDto)); } /** * å¼ç¥¨ç»è®°äº§åæ¥è¯¢ * @param invoiceRegistrationProductDto * @return */ @GetMapping("/productList") public AjaxResult invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto) { return AjaxResult.success(invoiceRegistrationService.invoiceRegistrationProductList(invoiceRegistrationProductDto)); } } src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.sales.dto; import com.ruoyi.sales.pojo.InvoiceRegistration; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class InvoiceRegistrationDto extends InvoiceRegistration { @ApiModelProperty(name = "å¼ç¥¨ç»è®°äº§åéå") private List<InvoiceRegistrationProductDto> productDtoList; } src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.sales.dto; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; import lombok.Data; @Data public class InvoiceRegistrationProductDto extends InvoiceRegistrationProduct { } src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.sales.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.sales.dto.InvoiceRegistrationDto; import com.ruoyi.sales.pojo.InvoiceRegistration; import org.apache.ibatis.annotations.Param; public interface InvoiceRegistrationMapper extends BaseMapper<InvoiceRegistration> { /** * å¼ç¥¨ç»è®°å页æ¥è¯¢ * @param page * @param invoiceRegistrationDto * @return */ IPage<InvoiceRegistrationDto> invoiceRegistrationListPage(Page page, @Param("invoiceRegistrationDto") InvoiceRegistrationDto invoiceRegistrationDto); } src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.sales.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; import org.apache.ibatis.annotations.Param; import java.util.List; public interface InvoiceRegistrationProductMapper extends BaseMapper<InvoiceRegistrationProduct> { /** * å¼ç¥¨ç»è®°äº§åæ¥è¯¢ * @param invoiceRegistrationProductDto * @return */ List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(@Param("invoiceRegistrationProductDto") InvoiceRegistrationProductDto invoiceRegistrationProductDto); } src/main/java/com/ruoyi/sales/pojo/InvoiceRegistration.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ package com.ruoyi.sales.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("invoice_registration") public class InvoiceRegistration { /** * åºå· */ @TableId(type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "éå®å°è´¦sales_ledger主é®") private Integer salesLedgerId; @ApiModelProperty(value = "éå®ååå·") private String salesContractNo; @ApiModelProperty(value = "客æ·åç§°ID") private Integer customerId; @ApiModelProperty(value = "ä¸å¡å") private String salesman; @ApiModelProperty(value = "项ç®åç§°") private String projectName; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty(value = "ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Integer tenantId; } src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProduct.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,87 @@ package com.ruoyi.sales.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @TableName("invoice_registration_product") @Data public class InvoiceRegistrationProduct { /** * åºå· */ @TableId(type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "å ³èéå®å°è´¦ä¸»è¡¨ä¸»é®") private Integer salesLedgerId; @ApiModelProperty(value = "sales_ledger_product主é®") private Integer salesLedgerProductId; @ApiModelProperty(value = "å¼ç¥¨ç»è®°è¡¨invoice_registration主é®") private Integer invoiceRegistrationId; @ApiModelProperty(value = "产å大类") private String productCategory; @ApiModelProperty(value = "è§æ ¼åå·") private String specificationModel; @ApiModelProperty(value = "åä½") private String unit; @ApiModelProperty(value = "æ°é") private BigDecimal quantity; @ApiModelProperty(value = "ç¨ç") private BigDecimal taxRate; @ApiModelProperty(value = "å«ç¨åä»·") private BigDecimal taxInclusiveUnitPrice; @ApiModelProperty(value = "å«ç¨æ»ä»·") private BigDecimal taxInclusiveTotalPrice; @ApiModelProperty(value = "ä¸å«ç¨æ»ä»·") private BigDecimal taxExclusiveTotalPrice; @ApiModelProperty(value = "å票类å") private String invoiceType; @ApiModelProperty(value = "å¼ç¥¨æ°") private Integer invoiceNum; @ApiModelProperty(value = "æªå¼ç¥¨æ°") private Integer noInvoiceNum; @ApiModelProperty(value = "å¼ç¥¨éé¢") private BigDecimal invoiceAmount; @ApiModelProperty(value = "æªå¼ç¥¨éé¢") private BigDecimal noInvoiceAmount; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty(value = "ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Integer tenantId; } src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package com.ruoyi.sales.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.sales.dto.InvoiceRegistrationDto; import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; public interface InvoiceRegistrationService { /** * å¼ç¥¨ç»è®°æ°å¢ * @param invoiceRegistrationDto * @return */ void invoiceRegistrationAdd(InvoiceRegistrationDto invoiceRegistrationDto); /** * å¼ç¥¨ç»è®°å é¤ * @param ids * @return */ int invoiceRegistrationDel(List<Integer> ids); /** * å¼ç¥¨è®°å½ä¿®æ¹ * @param invoiceRegistrationDto * @return */ void invoiceRegistrationUpdate(InvoiceRegistrationDto invoiceRegistrationDto); /** * å¼ç¥¨ç»è®°å页æ¥è¯¢ * @param page * @param invoiceRegistrationDto * @return */ IPage<InvoiceRegistrationDto> invoiceRegistrationListPage(Page page, InvoiceRegistrationDto invoiceRegistrationDto); /** * å¼ç¥¨ç»è®°äº§åæ¥è¯¢ * @param invoiceRegistrationProductDto * @return */ List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto); } src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,111 @@ package com.ruoyi.sales.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.sales.dto.InvoiceRegistrationDto; import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; import com.ruoyi.sales.mapper.InvoiceRegistrationMapper; import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper; import com.ruoyi.sales.pojo.InvoiceRegistration; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; import com.ruoyi.sales.service.InvoiceRegistrationService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collections; import java.util.List; @Service public class InvoiceRegistrationServiceImpl extends ServiceImpl<InvoiceRegistrationMapper, InvoiceRegistration> implements InvoiceRegistrationService { private InvoiceRegistrationMapper invoiceRegistrationMapper; private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; /** * å¼ç¥¨ç»è®°æ°å¢ * @param invoiceRegistrationDto * @return */ @Override @Transactional(rollbackFor = Exception.class) public void invoiceRegistrationAdd(InvoiceRegistrationDto invoiceRegistrationDto) { InvoiceRegistration invoiceRegistration = new InvoiceRegistration(); BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration); // æ°å¢å¼ç¥¨ç»è®° invoiceRegistrationMapper.insert(invoiceRegistration); List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList(); // æ°å¢å¼ç¥¨äº§åç»è®° if(CollectionUtils.isNotEmpty(productDtoList)){ for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) { InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct(); BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct); invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId()); invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct); } } } /** * å¼ç¥¨ç»è®°å é¤ * @param ids * @return */ @Override @Transactional(rollbackFor = Exception.class) public int invoiceRegistrationDel(List<Integer> ids) { int excuteNum = invoiceRegistrationMapper.deleteBatchIds(ids); LambdaQueryWrapper<InvoiceRegistrationProduct> delWrapper = new LambdaQueryWrapper<>(); delWrapper.in(InvoiceRegistrationProduct::getInvoiceRegistrationId, ids); invoiceRegistrationProductMapper.delete(delWrapper); return excuteNum; } /** * å¼ç¥¨è®°å½ä¿®æ¹ * @param invoiceRegistrationDto * @return */ @Override public void invoiceRegistrationUpdate(InvoiceRegistrationDto invoiceRegistrationDto) { InvoiceRegistration invoiceRegistration = new InvoiceRegistration(); BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration); // å¼ç¥¨ç»è®°ä¿®æ¹ invoiceRegistrationMapper.updateById(invoiceRegistration); List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList(); // å¼ç¥¨äº§åç»è®°ä¿®æ¹ if(CollectionUtils.isNotEmpty(productDtoList)){ for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) { InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct(); BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct); invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct); } } } /** * å¼ç¥¨ç»è®°å页æ¥è¯¢ * @param page * @param invoiceRegistrationDto * @return */ @Override public IPage<InvoiceRegistrationDto> invoiceRegistrationListPage(Page page, InvoiceRegistrationDto invoiceRegistrationDto) { return null; } /** * å¼ç¥¨ç»è®°äº§åæ¥è¯¢ * @param invoiceRegistrationProductDto * @return */ @Override public List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto) { return Collections.emptyList(); } } src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.sales.mapper.InvoiceRegistrationMapper"> <select id="invoiceRegistrationListPage" resultType="com.ruoyi.sales.dto.InvoiceRegistrationDto"> SELECT id , sales_ledger_id , sales_contract_no , customer_id , salesman , project_name , create_time , create_user , update_time , update_user , tenant_id FROM invoice_registration </select> </mapper> src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper"> <select id="invoiceRegistrationProductList" resultType="com.ruoyi.sales.dto.InvoiceRegistrationDto"> SELECT id , sales_ledger_id , sales_ledger_product_id , invoice_registration_id , product_category , specification_model , unit , quantity , tax_rate , tax_inclusive_unit_price , tax_inclusive_total_price , tax_exclusive_total_price , invoice_type , invoice_num , invoice_amount , no_invoice_num , no_invoice_amount , create_time , create_user , update_time , update_user , tenant_id , FROM invoice_registration_product <where> <if test="invoiceRegistrationProductDto.invoiceRegistrationId != null"> invoice_registration_id = #{invoiceRegistrationProductDto.invoiceRegistrationId} </if> </where> </select> </mapper>