Merge remote-tracking branch 'origin/beta' into zxz

beta-prop-all^2
zbtianwd 2 years ago
commit fd3d1bca4a
  1. 26
      jianshui-admin/src/main/java/com/jianshui/web/controller/platform/RedInformationController.java
  2. 47
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/FindRedWordDTO.java
  3. 8
      jianshui-invoice/src/main/java/com/jianshui/invoice/mapper/RedinfoMapper.java
  4. 12
      jianshui-invoice/src/main/resources/mapper/invoice/RedinfoMapper.xml
  5. 6
      jianshui-platform/src/main/java/com/jianshui/platform/constant/ExceptionInformationConstants.java
  6. 12
      jianshui-platform/src/main/java/com/jianshui/platform/constant/RedWordConstants.java
  7. 72
      jianshui-platform/src/main/java/com/jianshui/platform/dto/invoicered/RedWordDTO.java
  8. 13
      jianshui-platform/src/main/java/com/jianshui/platform/dto/invoicered/RedWordSelectionDTO.java
  9. 46
      jianshui-platform/src/main/java/com/jianshui/platform/dto/invoicered/RedinfodetailDTO.java
  10. 24
      jianshui-platform/src/main/java/com/jianshui/platform/service/RedInformationService.java
  11. 246
      jianshui-platform/src/main/java/com/jianshui/platform/service/impl/RedInformationServiceImpl.java
  12. 88
      jianshui-platform/src/main/java/com/jianshui/platform/vo/invoicered/FindRedWordVO.java
  13. 24
      jianshui-platform/src/main/java/com/jianshui/platform/vo/invoicered/PageFindRedWordVO.java
  14. 9
      jianshui-platform/src/main/java/com/jianshui/platform/vo/invoicered/RedWordSelectionVO.java

@ -1,7 +1,9 @@
package com.jianshui.web.controller.platform;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.platform.dto.RedInformationDTO;
import com.jianshui.invoice.domain.dto.FindRedWordDTO;
import com.jianshui.platform.dto.invoicered.RedWordSelectionDTO;
import com.jianshui.platform.dto.invoicered.RedWordDTO;
import com.jianshui.platform.service.RedInformationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -22,9 +24,23 @@ public class RedInformationController {
@Autowired
private RedInformationService redInformationService;
@ApiOperation("蓝字发票信息查询")
@PostMapping("/findBlueInvoice")
public AjaxResult findBlueInvoice(@RequestBody RedInformationDTO redInformationDTO){
return redInformationService.findBlueInvoice(redInformationDTO);
@ApiOperation("红字信息选择")
@PostMapping("/redWordSelection")
public AjaxResult redWordSelection(@RequestBody RedWordSelectionDTO dto){
return redInformationService.redWordSelection(dto);
}
@ApiOperation("红字信息提交")
@PostMapping("/redWordSubmit")
public AjaxResult redWordSubmit(@RequestBody RedWordDTO dto){
return redInformationService.redWordSubmit(dto);
}
@ApiOperation("红字信息表列表展示")
@PostMapping("/findRedWord")
public AjaxResult findRedWord(@RequestBody FindRedWordDTO dto){
return redInformationService.findRedWord(dto);
}
}

@ -0,0 +1,47 @@
package com.jianshui.invoice.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: kane
* @Description: 红字信息查询类
* @CreateTime: 2023-06-26 09:20
* @Version: 1.0
**/
@ApiModel("红字信息查询")
@Data
public class FindRedWordDTO {
@ApiModelProperty("当前页")
private Integer pageNum;
@ApiModelProperty("每页记录数")
private Integer pageSize;
@ApiModelProperty("信息表编号")
private String redInfoNo;
@ApiModelProperty("购方名称")
private String buyerName;
@ApiModelProperty("购方税号")
private String buyerTaxnum;
@ApiModelProperty("信息表状态")
private String redInfoStatus;
@ApiModelProperty("填开日期开始时间")
private String beginBillInputTime;
@ApiModelProperty("填开日期结束时间")
private String endBillInputTime;
@ApiModelProperty("发票代码")
private String originFpdm;
@ApiModelProperty("发票号码")
private String originFphm;
}

@ -5,6 +5,7 @@ import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jianshui.invoice.domain.Redinfo;
import com.jianshui.invoice.domain.Redinfodetail;
import com.jianshui.invoice.domain.dto.FindRedWordDTO;
/**
* 红字信息表Mapper接口
@ -85,4 +86,11 @@ public interface RedinfoMapper extends BaseMapper<Redinfo> {
* @return 结果
*/
public int deleteRedinfodetailByRedinfoId(Long id);
/**
* 功能描述: 红字信息列表展示
* @param dto
* @return : java.util.List<com.jianshui.invoice.domain.Redinfo>
*/
List<Redinfo> findRedInfoList(FindRedWordDTO dto);
}

@ -143,6 +143,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join redinfodetail b on b.redinfo_id = a.id
where a.id = #{id}
</select>
<select id="findRedInfoList" resultMap="RedinfoResult">
<include refid="selectRedinfoVo"/>
<where>
<if test="redInfoNo != null and redInfoNo != ''"> and red_info_no like concat('%', #{redInfoNo},'%')</if>
<if test="buyerName != null and buyerName != ''"> and buyer_name like concat('%', #{buyerName},'%')</if>
<if test="buyerTaxnum != null and buyerTaxnum != ''"> and buyer_taxnum like concat('%',#{buyerTaxnum},'%')</if>
<if test="redInfoStatus != null and redInfoStatus != ''"> and red_info_status like concat('%', #{redInfoStatus},'%')</if>
<if test="originFpdm != null and originFpdm != ''"> and origin_fpdm like concat('%', #{originFpdm},'%')</if>
<if test="originFphm != null and originFphm != ''"> and origin_fphm like concat('%', #{originFphm},'%')</if>
<if test="beginBillInputTime != null and beginBillInputTime != '' and endBillInputTime != null and endBillInputTime != ''"> and bill_input_time between #{beginBillInputTime} and #{endBillInputTime}</if>
</where>
</select>
<insert id="insertRedinfo" parameterType="Redinfo" useGeneratedKeys="true" keyProperty="id">
insert into redinfo

@ -16,4 +16,10 @@ public class ExceptionInformationConstants {
// 未查询到发票信息
public static final String NOTINVOICEINFORMATION = "本地未查询到对应的蓝字发票信息,点击确定继续录入单据";
// 申请类型有误
public static final String REQUESTTYPEERROR = "申请类型有误";
//发票相关信息为空
public static final String INVOICEINFORMATIONISEMPTY = "发票相关信息为空";
}

@ -11,4 +11,16 @@ public class RedWordConstants {
public static final String XFTYPE = "0";
// 购方类型(已抵扣)
public static final String ISDEDUCTION = "1";
// 购方类型(未抵扣)
public static final String NOTDEDUCTION = "2";
// 含税单价
public static final String TAXINVOICE = "0";
// 不含税单价
public static final String NOTTAXINVOICE = "1";
// 提交结果响应
public static final String SUBMITSUCCESS = "提交成功";
}

@ -0,0 +1,72 @@
package com.jianshui.platform.dto.invoicered;
import com.jianshui.invoice.domain.Redinfodetail;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author: kane
* @Description: 红字信息类
* @CreateTime: 2023-06-21 17:20
* @Version: 1.0
**/
@ApiModel("红字信息")
@Data
public class RedWordDTO {
@NotEmpty
@ApiModelProperty("填开类型")
private String billInputType;
@NotNull
@ApiModelProperty("填开日期")
private String billInputTime;
@NotEmpty
@ApiModelProperty("含税不含税标志 0-含税 1-不含税")
private String status;
@ApiModelProperty("经办人")
private String jbr;
@NotEmpty
@ApiModelProperty("销方名称")
private String sellerName;
@NotEmpty
@ApiModelProperty("销方税号")
private String sellerTaxnum;
@NotEmpty
@ApiModelProperty("购方名称")
private String buyerName;
@NotEmpty
@ApiModelProperty("购方税号")
private String buyerTaxnum;
@NotEmpty
@ApiModelProperty("申请类型 0-销方 1-购方已抵扣 2-购方未抵扣")
private String sqlx;
@ApiModelProperty("发票代码")
private String originFpdm;
@ApiModelProperty("发票号码")
private String originFphm;
@NotEmpty
@ApiModelProperty("发票种类 p电子增值税普通发票 c增值税普通发票 s 增值税专用发票 e 收购发票 f 收购发票 r增值税普通发票")
private String invoiceType;
@NotNull
@ApiModelProperty("开票日期")
private String originKprq;
@NotNull
@ApiModelProperty("合计金额")
private BigDecimal totalMoney;
@NotNull
@ApiModelProperty("合计税额")
private BigDecimal totalTax;
@ApiModelProperty("红字信息详情列表")
private List<RedinfodetailDTO> redinfodetailList;
}

@ -1,22 +1,25 @@
package com.jianshui.platform.dto;
package com.jianshui.platform.dto.invoicered;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
/**
* @Author: kane
* @Description: 红字信息填开
* @Description: 红字信息选择
* @CreateTime: 2023-06-21 15:14
* @Version: 1.0
**/
@Data
@ApiModel("红字信息填开类")
public class RedInformationDTO {
@ApiModel("红字信息选择")
public class RedWordSelectionDTO {
@ApiModelProperty("发票类型")
@NotEmpty
@ApiModelProperty("发票类型 s-专用发票")
private String fplx;
@NotEmpty
@ApiModelProperty("申请类型 0-销方 1-购方已抵扣 2-购方未抵扣")
private String sqlx;

@ -0,0 +1,46 @@
package com.jianshui.platform.dto.invoicered;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* @Author: kane
* @Description: 红字信息详情
* @CreateTime: 2023-06-25 15:38
* @Version: 1.0
**/
@Data
@ApiModel("红字信息详情")
public class RedinfodetailDTO {
@NotEmpty
@ApiModelProperty("商品名称")
private String goodName;
@NotEmpty
@ApiModelProperty("规格型号")
private String spec;
@NotEmpty
@ApiModelProperty("单位")
private String unit;
@NotEmpty
@ApiModelProperty("商品数量")
private BigDecimal num;
@NotNull
@ApiModelProperty("单价")
private BigDecimal cost;
@NotNull
@ApiModelProperty("金额")
private BigDecimal money;
@NotNull
@ApiModelProperty("税率")
private BigDecimal taxrate;
@NotNull
@ApiModelProperty("税额")
private BigDecimal tax;
}

@ -1,7 +1,9 @@
package com.jianshui.platform.service;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.platform.dto.RedInformationDTO;
import com.jianshui.invoice.domain.dto.FindRedWordDTO;
import com.jianshui.platform.dto.invoicered.RedWordSelectionDTO;
import com.jianshui.platform.dto.invoicered.RedWordDTO;
/**
* @Author: kane
@ -11,9 +13,23 @@ import com.jianshui.platform.dto.RedInformationDTO;
**/
public interface RedInformationService {
/**
* 功能描述: 获取蓝票信息
* @param redInformationDTO
* 功能描述: 红字信息选择
* @param redWordSelectionDTO
* @return : com.jianshui.common.core.domain.AjaxResult
*/
AjaxResult findBlueInvoice(RedInformationDTO redInformationDTO);
AjaxResult redWordSelection(RedWordSelectionDTO redWordSelectionDTO);
/**
* 功能描述: 红字信息提交
* @param dto
* @return : com.jianshui.common.core.domain.AjaxResult
*/
AjaxResult redWordSubmit(RedWordDTO dto);
/**
* 功能描述: 红字信息查询
* @param dto
* @return : com.jianshui.common.core.domain.AjaxResult
*/
AjaxResult findRedWord(FindRedWordDTO dto);
}

@ -1,26 +1,43 @@
package com.jianshui.platform.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.common.core.domain.entity.Companyservice;
import com.jianshui.common.core.domain.entity.SysUser;
import com.jianshui.common.core.domain.model.LoginUser;
import com.jianshui.common.exception.jianshui.JianshuiServiceException;
import com.jianshui.common.utils.SecurityUtils;
import com.jianshui.common.utils.ValidateUtils;
import com.jianshui.invoice.domain.Invoice;
import com.jianshui.invoice.domain.InvoiceDetail;
import com.jianshui.invoice.domain.Redinfo;
import com.jianshui.invoice.domain.Redinfodetail;
import com.jianshui.invoice.mapper.InvoiceMapper;
import com.jianshui.invoice.mapper.RedinfoMapper;
import com.jianshui.platform.constant.ExceptionInformationConstants;
import com.jianshui.platform.constant.RedWordConstants;
import com.jianshui.platform.dto.RedInformationDTO;
import com.jianshui.invoice.domain.dto.FindRedWordDTO;
import com.jianshui.platform.dto.invoicered.RedWordSelectionDTO;
import com.jianshui.platform.dto.invoicered.RedWordDTO;
import com.jianshui.platform.dto.invoicered.RedinfodetailDTO;
import com.jianshui.platform.service.RedInformationService;
import com.jianshui.platform.vo.BlueInvoiceVO;
import com.jianshui.platform.vo.invoicered.FindRedWordVO;
import com.jianshui.platform.vo.invoicered.PageFindRedWordVO;
import com.jianshui.platform.vo.invoicered.RedWordSelectionVO;
import com.jianshui.system.mapper.CompanyserviceMapper;
import com.jianshui.system.mapper.SysUserMapper;
import com.jianshui.system.service.IServiceManageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import static com.github.pagehelper.page.PageMethod.startPage;
/**
* @Author: kane
@ -29,6 +46,7 @@ import java.util.List;
* @Version: 1.0
**/
@Service
@Slf4j
public class RedInformationServiceImpl implements RedInformationService {
@Autowired
@ -42,60 +60,222 @@ public class RedInformationServiceImpl implements RedInformationService {
@Autowired
private CompanyserviceMapper companyserviceMapper;
@Autowired
private IServiceManageService serviceManageService;
/**
* 功能描述: 蓝票信息获取
* @param redInformationDTO
* 功能描述: 红字信息选择
* @param redWordSelectionDTO
* @return : com.jianshui.common.core.domain.AjaxResult
*/
@Override
public AjaxResult findBlueInvoice(RedInformationDTO redInformationDTO) {
public AjaxResult redWordSelection(RedWordSelectionDTO redWordSelectionDTO) {
//判空
if (redInformationDTO.getFpdm().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.FPDMISEMPTY);
}
if (redInformationDTO.getFphm().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.FPHMISEMPTY);
}
if (redInformationDTO.getKprq().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.KPRQISEMPTY);
}
ValidateUtils.validate(redWordSelectionDTO);
//获取当前用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = sysUserMapper.selectUserById(loginUser.getUserId());
//根据用户信息获取企业信息
Companyservice companyservice = companyserviceMapper.selectCompanyserviceByCompanyid(sysUser.getCompanyId());
//销方类型
if (RedWordConstants.XFTYPE.equals(redInformationDTO.getSqlx())){
if (RedWordConstants.XFTYPE.equals(redWordSelectionDTO.getSqlx())){
//空信息响应
if (redWordSelectionDTO.getFpdm().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.FPDMISEMPTY);
}
if (redWordSelectionDTO.getFphm().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.FPHMISEMPTY);
}
if (redWordSelectionDTO.getKprq().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.KPRQISEMPTY);
}
//查询蓝票信息
Invoice invoice = invoiceMapper.selectByFpdmFphm(companyservice.getCompanyid(),redInformationDTO.getFpdm(), redInformationDTO.getFphm());
Invoice invoice = invoiceMapper.selectByFpdmFphm(companyservice.getCompanyid(),redWordSelectionDTO.getFpdm(), redWordSelectionDTO.getFphm());
//明细行数记录
int count = 0;
if (invoice != null){
BlueInvoiceVO blueInvoiceVO = new BlueInvoiceVO();
BeanUtils.copyProperties(invoice,blueInvoiceVO);
//封装红字信息选择返回
RedWordSelectionVO redWordSelectionVO = new RedWordSelectionVO();
BeanUtils.copyProperties(invoice,redWordSelectionVO);
List<InvoiceDetail> invoiceDetailList = invoice.getInvoiceDetailList();
//统计明细行数
for (InvoiceDetail invoiceDetail : invoiceDetailList) {
if (invoiceDetail != null){
count++;
}
}
blueInvoiceVO.setDetailCount(count);
return AjaxResult.success(blueInvoiceVO);
redWordSelectionVO.setDetailCount(count);
redWordSelectionVO.setSqlx(redWordSelectionDTO.getSqlx());
return AjaxResult.success(redWordSelectionVO);
}
return AjaxResult.error(ExceptionInformationConstants.NOTINVOICEINFORMATION);
}else if (RedWordConstants.ISDEDUCTION.equals(redInformationDTO.getSqlx())){
//购方已抵扣
BlueInvoiceVO blueInvoiceVO = new BlueInvoiceVO();
blueInvoiceVO.setBuyerName(companyservice.getSellername());
blueInvoiceVO.setBuyerTaxnum(companyservice.getSellertax());
return AjaxResult.success(blueInvoiceVO);
}else if (RedWordConstants.ISDEDUCTION.equals(redWordSelectionDTO.getSqlx())){
//购方已抵扣返回类
RedWordSelectionVO redWordSelectionVO = new RedWordSelectionVO();
redWordSelectionVO.setBuyerName(companyservice.getSellername());
redWordSelectionVO.setBuyerTaxnum(companyservice.getSellertax());
redWordSelectionVO.setSqlx(redWordSelectionDTO.getSqlx());
return AjaxResult.success(redWordSelectionVO);
}else if (RedWordConstants.NOTDEDUCTION.equals(redWordSelectionDTO.getSqlx())){
//空信息响应
if (redWordSelectionDTO.getFpdm().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.FPDMISEMPTY);
}
if (redWordSelectionDTO.getFphm().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.FPHMISEMPTY);
}
if (redWordSelectionDTO.getKprq().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.KPRQISEMPTY);
}
//购方未抵扣返回类
RedWordSelectionVO redWordSelectionVO = new RedWordSelectionVO();
BeanUtils.copyProperties(redWordSelectionDTO,redWordSelectionVO);
redWordSelectionVO.setBuyerName(companyservice.getSellername());
redWordSelectionVO.setBuyerTaxnum(companyservice.getSellertax());
return AjaxResult.success(redWordSelectionVO);
}else {
//购方未抵扣
BlueInvoiceVO blueInvoiceVO = new BlueInvoiceVO();
BeanUtils.copyProperties(redInformationDTO,blueInvoiceVO);
blueInvoiceVO.setBuyerName(companyservice.getSellername());
blueInvoiceVO.setBuyerTaxnum(companyservice.getSellertax());
return AjaxResult.success(blueInvoiceVO);
return AjaxResult.error(ExceptionInformationConstants.REQUESTTYPEERROR);
}
}
/**
* 功能描述: 红字信息提交
* @param dto
* @return : com.jianshui.common.core.domain.AjaxResult
*/
@Override
public AjaxResult redWordSubmit(RedWordDTO dto) {
//判空
ValidateUtils.validate(dto);
//类型判断
if (RedWordConstants.XFTYPE.equals(dto.getSqlx())){
//发票信息判断
if (dto.getOriginFpdm().isEmpty() || dto.getOriginFphm().isEmpty() || dto.getOriginKprq().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.INVOICEINFORMATIONISEMPTY);
}
//红字信息保存
insertRedWord(dto);
}else if (RedWordConstants.ISDEDUCTION.equals(dto.getSqlx())){
//红字信息保存
insertRedWord(dto);
}else {
//发票信息判断
if (dto.getOriginFpdm().isEmpty() || dto.getOriginFphm().isEmpty() || dto.getOriginKprq().isEmpty()){
return AjaxResult.error(ExceptionInformationConstants.INVOICEINFORMATIONISEMPTY);
}
//红字信息保存
insertRedWord(dto);
}
return AjaxResult.success(RedWordConstants.SUBMITSUCCESS);
}
/**
* 功能描述: 红字信息保存
* @param dto
* @return : com.jianshui.common.core.domain.AjaxResult
*/
public void insertRedWord(RedWordDTO dto){
//获取用户信息
Long userId = SecurityUtils.getUserId();
SysUser sysUser = sysUserMapper.selectUserById(userId);
Companyservice companyservice = companyserviceMapper.selectCompanyserviceByCompanyid(sysUser.getCompanyId());
//封装红字信息实体类
Redinfo redinfo = new Redinfo();
BeanUtils.copyProperties(dto,redinfo);
if (RedWordConstants.TAXINVOICE.equals(dto.getStatus())){
//含税总计金额
redinfo.setTaxamt(dto.getTotalMoney());
//总计税额
redinfo.setTax(dto.getTotalTax());
//不含税总计金额
redinfo.setTaxfreeamt(dto.getTotalMoney().subtract(dto.getTotalTax()));
}
if (RedWordConstants.NOTTAXINVOICE.equals(dto.getStatus())){
//不含税总计金额
redinfo.setTaxfreeamt(dto.getTotalMoney());
//含税总计金额
redinfo.setTaxamt(dto.getTotalMoney().add(dto.getTotalTax()));
//总计税额
redinfo.setTax(dto.getTotalTax());
}
//不为空字段
String uuidhm = UUID.randomUUID().toString();
redinfo.setSystemOrderno(uuidhm);
String outOrderNO = uuidhm.replaceAll("-", "");
redinfo.setOutTradeOrderno(outOrderNO);
redinfo.setFpqqlsh(uuidhm);
redinfo.setCompanyId(sysUser.getCompanyId());
redinfo.setRedInfoStatus("0");
String serviceKey = null;
try {
serviceKey = serviceManageService.getCompanyServiceSupplier("invoice", sysUser.getCompanyId());
redinfo.setServiceSupplierKey(serviceKey);
} catch (Exception e) {
log.error("简税产品端,红字信息提交失败,企业税号={},servicekey={}",companyservice.toString(),serviceKey);
throw new JianshuiServiceException("红字信息提交异常!");
}
//保存红字信息
redinfoMapper.insertRedinfo(redinfo);
//封装红字信息详情实体类
List<RedinfodetailDTO> redinfodetailList = dto.getRedinfodetailList();
List<Redinfodetail> redinfodetails = new ArrayList<>();
//行数
int count = 1;
for (RedinfodetailDTO redinfodetailDTO : redinfodetailList) {
//红字信息详情实体类
Redinfodetail redinfodetail = new Redinfodetail();
BeanUtils.copyProperties(redinfodetailDTO,redinfodetail);
redinfodetail.setRedinfoId(redinfo.getId());
redinfodetail.setIndex(count);
redinfodetail.setTaxrate(redinfodetailDTO.getTaxrate().divide(new BigDecimal("100"),4,BigDecimal.ROUND_HALF_UP));
if (RedWordConstants.TAXINVOICE.equals(dto.getStatus())){
//单价税额
BigDecimal taxCost = redinfodetailDTO.getTax().divide(redinfodetailDTO.getNum(),2,BigDecimal.ROUND_HALF_UP);
//不含税单价
redinfodetail.setPrice(redinfodetailDTO.getCost().subtract(taxCost));
//含税金额
redinfodetail.setTaxamt(redinfodetailDTO.getMoney());
//不含税金额
redinfodetail.setTaxfreeamt(redinfodetailDTO.getMoney().subtract(redinfodetailDTO.getTax()));
}else if (RedWordConstants.NOTTAXINVOICE.equals(dto.getStatus())){
//不含税单价
redinfodetail.setPrice(redinfodetailDTO.getCost());
//不含税金额
redinfodetail.setTaxfreeamt(redinfodetailDTO.getMoney());
//含税金额
redinfodetail.setTaxamt(redinfodetailDTO.getMoney().add(redinfodetailDTO.getTax()));
}
redinfodetails.add(redinfodetail);
count++;
}
//保存红字信息详情
redinfoMapper.batchRedinfodetail(redinfodetails);
}
/**
* 功能描述: 红字信息查询
* @param dto
* @return : com.jianshui.common.core.domain.AjaxResult
*/
@Override
public AjaxResult findRedWord(FindRedWordDTO dto) {
//获取红字信息集合
PageHelper.startPage(dto.getPageNum(),dto.getPageSize());
List<Redinfo> redinfoList = redinfoMapper.findRedInfoList(dto);
PageInfo<Redinfo> pageInfo = new PageInfo<>(redinfoList);
//封装红字信息集合返回
List<FindRedWordVO> findRedWordVOS = new ArrayList<>();
for (Redinfo redinfo : pageInfo.getList()) {
FindRedWordVO findRedWordVO = new FindRedWordVO();
BeanUtils.copyProperties(redinfo,findRedWordVO);
findRedWordVOS.add(findRedWordVO);
}
//分页对象
PageFindRedWordVO pageFindRedWordVO = new PageFindRedWordVO();
pageFindRedWordVO.setTotal(pageInfo.getTotal());
pageFindRedWordVO.setRecords(findRedWordVOS);
return AjaxResult.success(pageFindRedWordVO);
}
}

@ -0,0 +1,88 @@
package com.jianshui.platform.vo.invoicered;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Author: kane
* @Description: 红字信息查询返回类
* @CreateTime: 2023-06-26 09:51
* @Version: 1.0
**/
@Data
@ApiModel("红字信息查询返回结果")
public class FindRedWordVO {
@ApiModelProperty("信息表编号")
private String redInfoNo;
@ApiModelProperty("信息表状态")
private String redInfoStatus;
@ApiModelProperty("信息表描述")
private String redInfoMessage;
@ApiModelProperty("发票代码")
private String originFpdm;
@ApiModelProperty("发票号码")
private String originFphm;
@ApiModelProperty("开票机号")
private String kpjh;
@ApiModelProperty("购方名称")
private String buyerName;
@ApiModelProperty("购方税号")
private String buyerTaxnum;
@ApiModelProperty("销方名称")
private String sellerName;
@ApiModelProperty("销方税号")
private String sellerTaxnum;
@ApiModelProperty("填开日期")
private String billInputTime;
@ApiModelProperty("所属月份")
private String ssyf;
@ApiModelProperty("合计税额")
private BigDecimal taxfreeamt;
@ApiModelProperty("税率")
private BigDecimal taxrate;
@ApiModelProperty("合计税额")
private BigDecimal tax;
@ApiModelProperty("经办人")
private String jbr;
@ApiModelProperty("申请选择")
private String sqxz;
@ApiModelProperty("申请方税号")
private String reqnsrsbh;
@ApiModelProperty("设备编号")
private String jspbh;
}

@ -0,0 +1,24 @@
package com.jianshui.platform.vo.invoicered;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author: kane
* @Description: 红字分页返回对象
* @CreateTime: 2023-06-26 11:11
* @Version: 1.0
**/
@ApiModel("红字分页返回对象")
@Data
public class PageFindRedWordVO {
@ApiModelProperty("总条数")
private long total;
@ApiModelProperty("总数据")
private List<FindRedWordVO> records;
}

@ -1,7 +1,6 @@
package com.jianshui.platform.vo;
package com.jianshui.platform.vo.invoicered;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jianshui.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -17,7 +16,7 @@ import java.util.Date;
**/
@ApiModel("蓝票信息类")
@Data
public class BlueInvoiceVO {
public class RedWordSelectionVO {
@ApiModelProperty("发票代码")
private String fpdm;
@ -37,6 +36,9 @@ public class BlueInvoiceVO {
@ApiModelProperty("购买方银行")
private String buyerAccount;
@ApiModelProperty("申请类型 0-销方 1-购方已抵扣 2-购方未抵扣")
private String sqlx;
@ApiModelProperty("含税金额")
private BigDecimal taxamt;
@ -53,4 +55,5 @@ public class BlueInvoiceVO {
private String deprecateType;
@ApiModelProperty("明细行数")
private Integer detailCount;
}