feat:完成税收分类编码接口,待测试

release
gongquanlin 2 years ago
parent 1c207b2828
commit 86be40072e
  1. 8
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/dao/GroupTaxClassCodeMapper.java
  2. 13
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/dao/TaxClassCodeMapper.java
  3. 9
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/service/TaxClassCodeService.java
  4. 12
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/service/impl/TaxClassCodeServiceImpl.java
  5. 16
      order-management-base-service/src/main/resources/mybatis/mapper/GroupTaxClassCodeMapper.xml
  6. 21
      order-management-base-service/src/main/resources/mybatis/mapper/TaxClassCodeMapper.xml
  7. 5
      order-management-common/src/main/java/com/dxhy/order/constant/ConfigurerInfo.java
  8. 9
      order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java
  9. 47
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java
  10. 28
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v4/grouptax/GroupTaxReqBO.java
  11. 31
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v4/grouptax/GroupTaxRespBO.java
  12. 15
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/DATABO.java
  13. 31
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/DATAINFOSBO.java
  14. 15
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/ESBBO.java
  15. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/MdmGmfxxtbMulticodeBO.java
  16. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/MdmGmfxxtbMulticodeValuelistBO.java
  17. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/MdmGmfxxtbReqBO.java
  18. 59
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/MdmSyncGroupTaxCodeReqBO.java
  19. 11
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/MdmSyncGroupTaxCodeResBO.java
  20. 16
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/SDEnergyMdmBaseBO.java
  21. 66
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/InterfaceServiceV3.java
  22. 351
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV3.java

@ -30,6 +30,14 @@ public interface GroupTaxClassCodeMapper {
*/
GroupTaxClassCodeEntity selectGroupTaxClassCode(String id);
/**
* 根据税号和商品名称查询商品
*
* @param id
* @return
*/
GroupTaxClassCodeEntity selectGroupTaxClassCodeByNsrsbhAndCode(@Param("xhf_nsrsbh") String nsrsbh,@Param("encoding") String encoding);
/**
* 更新
*

@ -1,6 +1,7 @@
package com.dxhy.order.baseservice.module.taxclass.dao;
import com.dxhy.order.baseservice.module.taxclass.model.TaxClassCodeEntity;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -20,6 +21,9 @@ public interface TaxClassCodeMapper {
*/
List<TaxClassCodeEntity> selectTaxClassCode(Map<String, Object> map);
List<TaxClassCodeEntity> selectTaxClassCodeBySpmcOrSm(String queryString);
// warning 以下sql添加redis缓存 修改请注意
/**
@ -31,6 +35,15 @@ public interface TaxClassCodeMapper {
TaxClassCodeEntity queryTaxClassCodeEntityBySpbm(String spbm);
/**
* 根据商品名称和描述查找商品分类编码
*
* @param spmc
* @return
*/
TaxClassCodeEntity queryTaxClassCodeEntityBySpmcOrMs(String spmc);
/**
* 查询所有税编表数据
*

@ -28,6 +28,15 @@ public interface TaxClassCodeService {
*/
TaxClassCodeEntity queryTaxClassCodeFromCache(String spbm);
/**
* 根据商品名称和描述查找商品分类编码
*
* @param spmc
* @param ms
* @return
*/
TaxClassCodeEntity queryTaxClassCodeFromCacheBySpmcOrMs(String spmc);
/**
* 缓存商品编码数据
*

@ -73,6 +73,18 @@ public class TaxClassCodeServiceImpl implements TaxClassCodeService {
return taxClassCodeEntity;
}
@Override
public TaxClassCodeEntity queryTaxClassCodeFromCacheBySpmcOrMs(String spmc) {
if (StringUtils.isBlank(spmc)) {
return null;
}
if (StringUtils.isBlank(spmc)) {
return null;
}
return taxClassCodeMapper.queryTaxClassCodeEntityBySpmcOrMs(spmc);
}
@Override
public boolean cacheTaxClassCode() {
long t1 = System.currentTimeMillis();

@ -27,7 +27,7 @@
</resultMap>
<sql id="Base_Column_List">
id
, sort_id, xhf_nsrsbh, merchandise_name, encoding, tax_items, brief_code, specification_model,
, sort_id, xhf_nsrsbh, merchandise_name, encoding, tax_items, brief_code, specification_model,
metering_unit, unit_price, tax_class_code, tax_classification_name, create_time,
dept_id, data_source, matching_state, data_state, share_state, group_id,tax_class_abbreviation,difference_flag,description
</sql>
@ -37,6 +37,18 @@
from group_tax_class_code
where id = #{id,jdbcType=VARCHAR}
</select>
<select id="selectGroupTaxClassCodeByNsrsbhAndCode" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from group_tax_class_code
<where>
<if test="xhf_nsrsbh != null and xhf_nsrsbh != ''"> and xhf_nsrsbh = #{xhf_nsrsbh,jdbcType=VARCHAR} </if>
<if test="encoding != null and encoding != ''"> and encoding = #{encoding,jdbcType=VARCHAR} </if>
</where>
limit 1
</select>
<!-- <delete id="deleteByPrimaryKey" parameterType="java.lang.String">-->
<!-- delete from group_tax_class_code-->
<!-- where id = #{id,jdbcType=VARCHAR}-->
@ -392,7 +404,7 @@
SELECT gc.group_name,
gctc.*
FROM group_tax_class_code gctc
LEFT JOIN group_commodity gc ON gctc.group_id = gc.id
LEFT JOIN group_commodity gc ON gctc.group_id = gc.id
where gctc.id = #{groupTaxClassCodeId,jdbcType=VARCHAR}
</select>
<!--条件查询税编信息 data_state为2是已经删除的-->

@ -101,6 +101,13 @@
</where>
</select>
<select id="selectTaxClassCodeBySpmcOrSm"
resultType="com.dxhy.order.baseservice.module.taxclass.model.TaxClassCodeEntity">
SELECT * FROM tax_class_code
where spmc like concat('%',#{queryString},'%') or sm like concat('%',#{queryString},'%')
</select>
<select id="queryTaxClassCodeEntityBySpbm" parameterType="String"
resultType="com.dxhy.order.baseservice.module.taxclass.model.TaxClassCodeEntity">
<bind name="dataType" value="${dataType}"/>
@ -112,6 +119,20 @@
and tcc.kyzt = 'Y'
AND TCC.hzx = 'N'
</select>
<select id="queryTaxClassCodeEntityBySpmcOrMs" parameterType="String"
resultType="com.dxhy.order.baseservice.module.taxclass.model.TaxClassCodeEntity">
<bind name="dataType" value="${dataType}"/>
SELECT
tcc.*
FROM tax_class_code tcc
WHERE
tcc.spmc like concat('%',#{spmc,jdbcType=VARCHAR},'%')
or tcc.spmc like concat('%',#{sm,jdbcType=VARCHAR},'%')
and tcc.kyzt = 'Y'
AND tcc.hzx = 'N'
</select>
<select id="queryAllTaxClassCode" resultMap="BaseResultMap">
SELECT id,
spbm,

@ -238,6 +238,11 @@ public class ConfigurerInfo {
*/
public static final String SDENERGY_MDM_KS_SYNCBUYERINFO = "SdEnergyMdmKsSyncBuyerInfo";
/**
* 山能MDM物料信息同步接口
*/
public static final String SDENERGY_MDM_KS_SYNC_GROUP_TAX_CODE = "SdEnergyMdmKsSyncGroupTaxCode";
/**
* 税控设备信息同步接口
*/

@ -2742,6 +2742,15 @@ public enum OrderInfoContentEnum {
QUERYINVALIDINVOICE_ZFZT_009999("009999", "发票作废失败"),
QUERYINVALIDINVOICE_ZFZT_001000("001000", "发票作废中"),
QUERYINVALIDINVOICE_ZFZT_002000("002000", "发票未作废"),
/**
* 同步税收分类编码(InterfaceServiceImplV3 syncGroupTax)
*/
SYNC_GROUP_TAX_000000("000000", "请求成功"),
SYNC_GROUP_TAX_009999("009999", "纳税人识别号和商品名称不能为空"),
SYNC_GROUP_TAX_009998("009998", "请求税号与企业维护secretId不一致"),
SYNC_GROUP_TAX_009997("009997", "无法匹配到税收分类编码,请手动维护"),
SYNC_GROUP_TAX_009996("009996", "系统未知异常"),
;
/**

@ -1,13 +1,16 @@
package com.dxhy.order.consumer.openapi.api;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxcxReqBO;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxcxRspBO;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxtbReqBO;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxtbRspBO;
import com.dxhy.order.baseservice.module.buyer.protocol.sdenergy.MdmGmfxxtbMulticodeValuelistBO;
import com.dxhy.order.baseservice.module.buyer.protocol.sdenergy.MdmGmfxxtbReqBO;
import com.dxhy.order.constant.OrderInfoContentEnum;
import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxRespBO;
import com.dxhy.order.consumer.openapi.protocol.v6.sdenergy.*;
import com.dxhy.order.baseservice.module.commodity.model.protocol.SpxxcxReqBO;
import com.dxhy.order.constant.ConfigureConstant;
import com.dxhy.order.constant.ConfigurerInfo;
@ -50,6 +53,8 @@ import javax.servlet.http.HttpServletResponse;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import static org.joda.time.DateTime.now;
@ -316,6 +321,44 @@ public class InvoiceRestApiV6 {
List<GmfxxtbRspBO> gmfxxtbRspList = interfaceServiceV3.syncBuyerMessage(gmfxxtbReqList, secretId);
returnJsonString = JsonUtils.getInstance().toJsonStringNullToEmpty(gmfxxtbRspList);
} else if (ConfigurerInfo.SDENERGY_MDM_KS_SYNC_GROUP_TAX_CODE.equals(interfaceName)) {
// 同步物料信息
SDEnergyMdmBaseBO baseBO = JSONObject.parseObject(reqStr, SDEnergyMdmBaseBO.class);
List<MdmSyncGroupTaxCodeReqBO> list = new ArrayList<>();
GroupTaxRespBO respBO = GroupTaxRespBO.build(OrderInfoContentEnum.SYNC_GROUP_TAX_009996);
try {
// 逐级判断是否为空,直到取到DATAINFO
list = (List<MdmSyncGroupTaxCodeReqBO>) Optional.of(baseBO)
.map(SDEnergyMdmBaseBO::getESB)
.map(ESBBO::getDATA)
.map(DATABO::getDATAINFOS)
.map(DATAINFOSBO::getDATAINFO)
.map(i -> {
// 转成List<MdmSyncGroupTaxCodeReqBO>
return i.stream().map(j -> {
return JSONObject.parseObject(JSONObject.toJSONString(j), MdmSyncGroupTaxCodeReqBO.class);
}).collect(Collectors.toList());
})
.orElse(new ArrayList<MdmSyncGroupTaxCodeReqBO>());
// 进行同步
List<GroupTaxReqBO> reqBOList = list.stream().map(i -> {
GroupTaxReqBO temp = new GroupTaxReqBO();
temp.setSpmc(i.getDESC1());
temp.setMs(i.getDESCSHORT());
temp.setUnit(i.getDESC5());
temp.setEncoding(i.getCODE());
return temp;
}).collect(Collectors.toList());
respBO = interfaceServiceV3.syncGroupTax(reqBOList, secretId);
} catch (Exception e) {
log.error("{}解析列表失败,原始string:{},错误原因{},错误堆栈:{}", LOGGER_MSG, reqStr, e.getMessage(), e.getStackTrace());
}
returnJsonString = JsonUtils.getInstance().toJsonStringNullToEmpty(respBO);
} else {
returnJsonString = "";
}

@ -0,0 +1,28 @@
package com.dxhy.order.consumer.openapi.protocol.v4.grouptax;
import com.dxhy.order.baseservice.module.taxclass.model.GroupTaxClassCodeEntity;
import lombok.Data;
/**
* @Description
* @Author 巩权林
* @Date 2023/2/10 08:30
**/
@Data
public class GroupTaxReqBO {
// 纳税人识别号
private String nsrsbh;
// 山能MDM物料接口的物料名称的值
private String spmc;
// 山能MDM中描述
private String ms;
// 山能MDM中的单位
private String unit;
// 山能MDM中 CODE主编码的值
private String encoding;
}

@ -0,0 +1,31 @@
package com.dxhy.order.consumer.openapi.protocol.v4.grouptax;
import com.dxhy.order.constant.OrderInfoContentEnum;
import com.dxhy.order.consumer.openapi.protocol.v4.ResponseV4BO;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author 巩权林
* @Date 2023/2/10 08:30
**/
@Data
public class GroupTaxRespBO extends ResponseV4BO implements Serializable {
public static GroupTaxRespBO build(OrderInfoContentEnum orderInfoContentEnum) {
GroupTaxRespBO resp = new GroupTaxRespBO();
resp.setZTDM(orderInfoContentEnum.getKey());
resp.setZTXX(orderInfoContentEnum.getMessage());
return resp;
}
public boolean isSuccess() {
return OrderInfoContentEnum.SUCCESS.getKey().equals(this.getZTDM());
}
public boolean isFailed() {
return !isSuccess();
}
}

@ -0,0 +1,15 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
public class DATABO {
private DATAINFOSBO DATAINFOS;
public void setDATAINFOS(DATAINFOSBO DATAINFOS) {
this.DATAINFOS = DATAINFOS;
}
public DATAINFOSBO getDATAINFOS() {
return DATAINFOS;
}
}

@ -0,0 +1,31 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
import com.alibaba.fastjson.annotation.JSONField;
import java.util.List;
public class DATAINFOSBO {
@JSONField(name = "DATAINFO")
private List DATAINFO;
private String PUUID;
public void setDATAINFO(List DATAINFO) {
this.DATAINFO = DATAINFO;
}
public List getDATAINFO() {
return DATAINFO;
}
public void setPUUID(String PUUID) {
this.PUUID = PUUID;
}
public String getPUUID() {
return PUUID;
}
}

@ -0,0 +1,15 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
public class ESBBO {
private DATABO DATA;
public void setDATA(DATABO DATA) {
this.DATA = DATA;
}
public DATABO getDATA() {
return DATA;
}
}

@ -1,4 +1,4 @@
package com.dxhy.order.baseservice.module.buyer.protocol.sdenergy;
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.ToString;

@ -1,4 +1,4 @@
package com.dxhy.order.baseservice.module.buyer.protocol.sdenergy;
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.ToString;

@ -0,0 +1,59 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
import lombok.ToString;
/**
* @Description
* @Author 巩权林
* @Date 2023/2/9 16:59
**/
@ToString
public class MdmSyncGroupTaxCodeReqBO {
private String CODE;
private String DESC1;
private String DESC5;
private String DESCSHORT;
private String UUID;
public void setCODE(String CODE) {
this.CODE = CODE;
}
public String getCODE() {
return CODE;
}
public void setDESC1(String DESC1) {
this.DESC1 = DESC1;
}
public String getDESC1() {
return DESC1;
}
public void setDESC5(String DESC5) {
this.DESC5 = DESC5;
}
public String getDESC5() {
return DESC5;
}
public void setDESCSHORT(String DESCSHORT) {
this.DESCSHORT = DESCSHORT;
}
public String getDESCSHORT() {
return DESCSHORT;
}
public void setUUID(String UUID) {
this.UUID = UUID;
}
public String getUUID() {
return UUID;
}
}

@ -0,0 +1,11 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
import com.dxhy.order.baseservice.module.taxclass.model.GroupTaxClassCodeEntity;
/**
* @Description
* @Author 巩权林
* @Date 2023/2/9 17:25
**/
public class MdmSyncGroupTaxCodeResBO extends GroupTaxClassCodeEntity {
}

@ -0,0 +1,16 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
public class SDEnergyMdmBaseBO {
private ESBBO ESBBO;
public void setESB(ESBBO ESBBO) {
this.ESBBO = ESBBO;
}
public ESBBO getESB() {
return ESBBO;
}
}

@ -22,6 +22,8 @@ import com.dxhy.order.consumer.openapi.protocol.v4.fpslzb.SlzbxxCxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.fpslzb.SlzbxxCxRspBO;
import com.dxhy.order.consumer.openapi.protocol.v4.fpyl.FpylcxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.fpyl.FpylcxRspBO;
import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxRespBO;
import com.dxhy.order.consumer.openapi.protocol.v4.invalid.ZfcxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.invalid.ZfcxRspBO;
import com.dxhy.order.consumer.openapi.protocol.v4.invoice.*;
@ -82,9 +84,9 @@ public interface InterfaceServiceV3 {
/**
* 专票冲红申请单
*
* @param hzsqdscReq 请求报文
* @param kpjh 开票机号
* @param secretId 标识用户身份的SecretId
* @param hzsqdscReq 请求报文
* @param kpjh 开票机号
* @param secretId 标识用户身份的SecretId
* @param interfaceVersion 接口版本号
* @return com.dxhy.order.consumer.openapi.protocol.v4.invoice.HzsqdscRspBO
*/
@ -104,9 +106,9 @@ public interface InterfaceServiceV3 {
/**
* 导入已开发票的数据
*
* @param ddfpzxxList 订单发票协议bean集合
* @param sourceType 订单来源
* @param secretId 标识用户身份的SecretId
* @param ddfpzxxList 订单发票协议bean集合
* @param sourceType 订单来源
* @param secretId 标识用户身份的SecretId
* @param interfaceVersion 接口版本号
* @return com.dxhy.order.consumer.protocol.v4.order.DDFPDR_RSP
* @author <a href="tivenninesongs@163.com">yaoxuguang</a>
@ -118,9 +120,9 @@ public interface InterfaceServiceV3 {
/**
* 导入京东已开发票的数据
*
* @param ddfpzxxList 订单发票协议bean集合
* @param sourceType 订单来源
* @param secretId 标识用户身份的SecretId
* @param ddfpzxxList 订单发票协议bean集合
* @param sourceType 订单来源
* @param secretId 标识用户身份的SecretId
* @param interfaceVersion 接口版本号
* @return com.dxhy.order.consumer.protocol.v4.order.DDFPDR_RSP
* @author <a href="tivenninesongs@163.com">yaoxuguang</a>
@ -132,7 +134,7 @@ public interface InterfaceServiceV3 {
* 查询商品信息
*
* @param spxxcxReq 商品信息请求协议bean
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.protocol.v4.order.SPXXCX_RSP
* @author <a href="tivenninesongs@163.com">yaoxuguang</a>
* @date 2020/4/18
@ -143,7 +145,7 @@ public interface InterfaceServiceV3 {
* 同步商品信息
*
* @param spxxtbReqList 同步商品信息协议bean集合
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.protocol.v4.commodity.SPXXTB_RSP
* @author <a href="tivenninesongs@163.com">yaoxuguang</a>
* @date 2020/4/20
@ -154,7 +156,7 @@ public interface InterfaceServiceV3 {
* 查询购买方信息
*
* @param gmfxxcxReq 购买方信息查询接口请求协议bean
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return java.util.List<com.dxhy.order.consumer.protocol.v4.buyermanage.GMFXX_COMMON>
* @author <a href="tivenninesongs@163.com">yaoxuguang</a>
* @date 2020/4/20
@ -165,7 +167,7 @@ public interface InterfaceServiceV3 {
* 同步购买方信息
*
* @param gmfxxtbReqList 同步购买方信息请求协议bean集合
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return java.util.List<com.dxhy.order.consumer.protocol.v4.buyermanage.GMFXXTB_RSP>
* @author <a href="tivenninesongs@163.com">yaoxuguang</a>
* @date 2020/4/20
@ -221,7 +223,7 @@ public interface InterfaceServiceV3 {
* 企业下架接口
*
* @param qyxjReqBOList 请求参数
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.qyxj.QyxjRspBo 响应参数
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-08-18
@ -232,7 +234,7 @@ public interface InterfaceServiceV3 {
* 发票申领结果接收(好活专用)
*
* @param jsfpslReqBO 请求参数
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.fpsl.JsfpslRspBO 响应参数
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-08-18
@ -243,7 +245,7 @@ public interface InterfaceServiceV3 {
* 税控设备信息查询接口
*
* @param sksbxxCxReqBO 请求参数
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.taxequipment.SksbxxCxRspBO 响应参数
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-08-30
@ -254,7 +256,7 @@ public interface InterfaceServiceV3 {
* 发票打印接口
*
* @param fpdyReqBO 请求参数
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.ResponseV4BO 响应参数
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-08-31
@ -265,7 +267,7 @@ public interface InterfaceServiceV3 {
* 打印机查询接口
*
* @param dyjcxReqBO 请求参数
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.fpdy.DyjcxRspBO 响应参数
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-08-31
@ -276,7 +278,7 @@ public interface InterfaceServiceV3 {
* 企业基本信息查询接口
*
* @param qyjbxxCxReqBO 请求协议
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.qyxx.QyjbxxCxRspBO 响应协议
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-09-10
@ -287,7 +289,7 @@ public interface InterfaceServiceV3 {
* 申领准备信息查询接口
*
* @param slzbxxCxReqBO 请求协议
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.fpslzb.SlzbxxCxRspBO 响应协议
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-09-10
@ -298,7 +300,7 @@ public interface InterfaceServiceV3 {
* 发票申领接口
*
* @param fpslReqBO 请求协议
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.fpsl.FpslRspBO 响应协议
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-09-13
@ -309,7 +311,7 @@ public interface InterfaceServiceV3 {
* 申领状态查询接口
*
* @param slztReqBO 请求协议
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.fpsl.SlztRspBO 响应协议
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-09-13
@ -320,7 +322,7 @@ public interface InterfaceServiceV3 {
* 纸票接收确认接口
*
* @param zpjsqrReqBO 请求协议
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.zpjsqr.ZpjsqrRspBO 响应协议
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-09-13
@ -331,7 +333,7 @@ public interface InterfaceServiceV3 {
* 撤销申领接口
*
* @param cxslReqBO 请求协议
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.fpsl.CxslRspBO 响应协议
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-09-13
@ -342,7 +344,7 @@ public interface InterfaceServiceV3 {
* 抄报状态查询接口
*
* @param cbztcxReqBO 请求协议
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.fpcb.CbztcxRspBO 响应协议
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-09-13
@ -353,7 +355,7 @@ public interface InterfaceServiceV3 {
* 汇总抄报接口
*
* @param hzcbReqBO 请求协议
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.fpcb.HzcbRspBO 响应协议
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-09-13
@ -364,10 +366,20 @@ public interface InterfaceServiceV3 {
* 作废结果查询接口方格
*
* @param zfcxReqBO 请求协议Bean
* @param secretId 标识用户身份的SecretId
* @param secretId 标识用户身份的SecretId
* @return com.dxhy.order.consumer.openapi.protocol.v4.invalid.ZfcxRspBO
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2021-12-27
*/
ZfcxRspBO queryInvalidInvoice(ZfcxReqBO zfcxReqBO, String secretId);
/**
* 同步集团商品税编表
*
* @param groupTaxReqBO
* @param secretId
* @return
*/
GroupTaxRespBO syncGroupTax(List<GroupTaxReqBO> groupTaxReqBO, String secretId);
}

@ -19,6 +19,9 @@ import com.dxhy.order.baseservice.module.commodity.model.CommodityCodeEntity;
import com.dxhy.order.baseservice.module.commodity.model.protocol.SpxxcxReqBO;
import com.dxhy.order.baseservice.module.commodity.service.CommodityService;
import com.dxhy.order.baseservice.module.commodity.service.VerifyCommodityCodeService;
import com.dxhy.order.baseservice.module.taxclass.dao.GroupTaxClassCodeMapper;
import com.dxhy.order.baseservice.module.taxclass.dao.TaxClassCodeMapper;
import com.dxhy.order.baseservice.module.taxclass.model.GroupTaxClassCodeEntity;
import com.dxhy.order.baseservice.module.taxclass.model.TaxClassCodeEntity;
import com.dxhy.order.baseservice.module.taxclass.service.TaxClassCodeService;
import com.dxhy.order.baseservice.module.thirdservice.rabbitmq.service.RabbitMqSendMessageService;
@ -53,6 +56,8 @@ import com.dxhy.order.consumer.openapi.protocol.v4.fpslzb.SlzbxxCxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.fpslzb.SlzbxxCxRspBO;
import com.dxhy.order.consumer.openapi.protocol.v4.fpyl.FpylcxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.fpyl.FpylcxRspBO;
import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxRespBO;
import com.dxhy.order.consumer.openapi.protocol.v4.invalid.ZfcxReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.invalid.ZfcxRspBO;
import com.dxhy.order.consumer.openapi.protocol.v4.invoice.*;
@ -272,6 +277,13 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
private CommonDisposeService commonDisposeService;
@Resource
private TaxClassCodeMapper taxClassCodeMapper;
@Resource
private GroupTaxClassCodeMapper groupTaxClassCodeMapper;
/**
* 发票结果查询接口业务处理
*
@ -280,7 +292,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
* @return
*/
@Override
@SentinelResource(value = "getAllocatedInvoicesV3",blockHandlerClass = InterfaceBlockExceptionUtil.class,blockHandler = "getAllocatedInvoicesV3Block")
@SentinelResource(value = "getAllocatedInvoicesV3", blockHandlerClass = InterfaceBlockExceptionUtil.class, blockHandler = "getAllocatedInvoicesV3Block")
public DdkjxxRspBO getAllocatedInvoicesV3(DdkjxxReqBO ddkjxxReq, String secretId) {
DdkjxxRspBO getInvoiceRsp = new DdkjxxRspBO();
@ -517,7 +529,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
* @return
*/
@Override
@SentinelResource(value = "getOrderInfoAndInvoiceInfoV3",blockHandlerClass = InterfaceBlockExceptionUtil.class,blockHandler = "getOrderInfoAndInvoiceInfoV3Block")
@SentinelResource(value = "getOrderInfoAndInvoiceInfoV3", blockHandlerClass = InterfaceBlockExceptionUtil.class, blockHandler = "getOrderInfoAndInvoiceInfoV3Block")
public DdfpcxRspBO getOrderInfoAndInvoiceInfoV3(DdfpcxReqBO ddfpcxReq, String secretId) {
String jsonString2 = JsonUtils.getInstance().toJsonString(ddfpcxReq);
log.debug("{},根据订单号获取订单数据以及发票数据接口数据:{}", LOGGER_MSG, jsonString2);
@ -852,7 +864,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
/**
* 获取PDF判断
*/
List<FileDownLoad> fileDownLoadList = orderInvoiceInfoService.getInvoiceFile(orderInfo.getDdlx(), orderInvoiceInfo.getFpzlDm(), orderInvoiceInfo.getPdfUrl(), orderInvoiceInfo.getKplsh(), orderInvoiceInfo.getFpdm(), orderInvoiceInfo.getFphm(), orderInvoiceInfo.getXhfNsrsbh(), terminalCode,"");
List<FileDownLoad> fileDownLoadList = orderInvoiceInfoService.getInvoiceFile(orderInfo.getDdlx(), orderInvoiceInfo.getFpzlDm(), orderInvoiceInfo.getPdfUrl(), orderInvoiceInfo.getKplsh(), orderInvoiceInfo.getFpdm(), orderInvoiceInfo.getFphm(), orderInvoiceInfo.getXhfNsrsbh(), terminalCode, "");
if (ObjectUtil.isNotEmpty(fileDownLoadList)) {
ddfpxx.setPDFZJL(fileDownLoadList.get(0).getFileContent());
ddfpxx.setZJLLX(CommonUtils.getZjlLx(fileDownLoadList.get(0).getFileSuffix()));
@ -1035,7 +1047,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
return ddfpcxRsp;
}
if(StringUtils.isNotBlank(fpcxReqBO.getFPDM()) && StringUtils.isNotBlank(fpcxReqBO.getFPHM())){
if (StringUtils.isNotBlank(fpcxReqBO.getFPDM()) && StringUtils.isNotBlank(fpcxReqBO.getFPHM())) {
if (StringUtils.length(fpcxReqBO.getFPDM()) > ConfigureConstant.INT_12 || !NumberUtil.isNumber(fpcxReqBO.getFPDM())) {
ddfpcxRsp.setZTDM(OrderInfoContentEnum.GET_INVOICE_PARAM_FPDM_V3_009673.getKey());
ddfpcxRsp.setZTXX(OrderInfoContentEnum.GET_INVOICE_PARAM_FPDM_V3_009673.getMessage());
@ -1050,7 +1062,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
return ddfpcxRsp;
}
}else{
} else {
if (StringUtils.isBlank(fpcxReqBO.getKPRQQ())) {
ddfpcxRsp.setZTDM(OrderInfoContentEnum.GET_INVOICE_PARAM_KPRQQ_V3_009663.getKey());
ddfpcxRsp.setZTXX(OrderInfoContentEnum.GET_INVOICE_PARAM_KPRQQ_V3_009663.getMessage());
@ -1065,7 +1077,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
}
}
if(StringUtils.isNotBlank(fpcxReqBO.getKPRQQ()) && StringUtils.isNotBlank(fpcxReqBO.getKPRQZ())){
if (StringUtils.isNotBlank(fpcxReqBO.getKPRQQ()) && StringUtils.isNotBlank(fpcxReqBO.getKPRQZ())) {
//开票日期起日期
if (!ConfigureConstant.DATE_FORMAT_DATE_Y_M_DH_M_S.equals(StringUtil.checkDateFormat(fpcxReqBO.getKPRQQ()))) {
ddfpcxRsp.setZTDM(OrderInfoContentEnum.GET_INVOICE_PARAM_DDRQQ_V3_009668.getKey());
@ -1207,7 +1219,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
/**
* 获取PDF判断
*/
List<FileDownLoad> fileDownLoadList = orderInvoiceInfoService.getInvoiceFile(orderInfo.getDdlx(), orderInvoiceInfo.getFpzlDm(), orderInvoiceInfo.getPdfUrl(), orderInvoiceInfo.getKplsh(), orderInvoiceInfo.getFpdm(), orderInvoiceInfo.getFphm(), orderInvoiceInfo.getXhfNsrsbh(), terminalCode,"");
List<FileDownLoad> fileDownLoadList = orderInvoiceInfoService.getInvoiceFile(orderInfo.getDdlx(), orderInvoiceInfo.getFpzlDm(), orderInvoiceInfo.getPdfUrl(), orderInvoiceInfo.getKplsh(), orderInvoiceInfo.getFpdm(), orderInvoiceInfo.getFphm(), orderInvoiceInfo.getXhfNsrsbh(), terminalCode, "");
if (ObjectUtil.isNotEmpty(fileDownLoadList)) {
ddfpxx.setPDFZJL(fileDownLoadList.get(0).getFileContent());
ddfpxx.setZJLLX(CommonUtils.getZjlLx(fileDownLoadList.get(0).getFileSuffix()));
@ -1291,7 +1303,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
}
ddfpcxRsp.setDDFPZXX(ddfpzxxBOList);
if(ObjectUtil.isNotEmpty(ddfpzxxBOList)){
if (ObjectUtil.isNotEmpty(ddfpzxxBOList)) {
ddfpcxRsp.setZTDM(OrderInfoContentEnum.INTERFACE_GETINVOICE_STATUS_000000.getKey());
ddfpcxRsp.setZTXX(OrderInfoContentEnum.INTERFACE_GETINVOICE_STATUS_000000.getMessage());
}
@ -1317,7 +1329,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
* @return
*/
@Override
public HzsqdscRspBO specialInvoiceRushRedV3(HzsqdscReqBO hzsqdscReq, String kpjh, String secretId,String interfaceVersion) {
public HzsqdscRspBO specialInvoiceRushRedV3(HzsqdscReqBO hzsqdscReq, String kpjh, String secretId, String interfaceVersion) {
HzsqdscRspBO hzsqdscRsp = new HzsqdscRspBO();
log.debug("{},接收红字发票申请单:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(hzsqdscReq));
@ -1354,15 +1366,15 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
}
//原开票日期补全后进行校验,红字专票(非成品油)购方已抵扣可不填
String xxbtsbs = hzsqdsczxx.getHZSQDTXX().getXXBTSBS();
String sqsm =hzsqdsczxx.getHZSQDTXX().getSQSM();
String sqsm = hzsqdsczxx.getHZSQDTXX().getSQSM();
boolean isCheck = OrderInfoEnum.SPECIAL_INVOICE_REASON_0000000100.getKey().equals(sqsm) ||
OrderInfoEnum.SPECIAL_INVOICE_REASON_1010000000.getKey().equals(sqsm) ||
CommonUtils.isGfsqAndOilProducts(sqsm,xxbtsbs);
if(isCheck && StringUtils.isBlank(hzsqdsczxx.getHZSQDTXX().getYFPKPRQ())){
CommonUtils.isGfsqAndOilProducts(sqsm, xxbtsbs);
if (isCheck && StringUtils.isBlank(hzsqdsczxx.getHZSQDTXX().getYFPKPRQ())) {
log.error("{}红字申请单上传原开票日期校验未通过,未通过数据:{}", LOGGER_MSG, hzsqdsczxx);
hzsqdscRsp.setZTDM(OrderInfoContentEnum.CHECK_ISS7PRI_115091.getKey());
hzsqdscRsp.setZTXX(OrderInfoContentEnum.CHECK_ISS7PRI_115091.getMessage());
if(CommonUtils.isGfsqAndOilProducts(sqsm,xxbtsbs)){
if (CommonUtils.isGfsqAndOilProducts(sqsm, xxbtsbs)) {
hzsqdscRsp.setZTDM(OrderInfoContentEnum.CHECK_ISS7PRI_115092.getKey());
hzsqdscRsp.setZTXX(OrderInfoContentEnum.CHECK_ISS7PRI_115092.getMessage());
}
@ -1371,19 +1383,18 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
}
//如果申请类别为空,根据申请说明补全
HzsqdscpcBO hzsqdscpc1 = hzsqdscReq.getHZSQDSCPC();
if(StringUtils.isBlank(hzsqdscpc1.getSQLB())){
if (StringUtils.isBlank(hzsqdscpc1.getSQLB())) {
HzsqdsczxxBO hzsqdsczxxBO = hzsqdscReq.getHZSQDSCZXX().get(0);
HzsqdtxxBO hzsqdtxx = hzsqdsczxxBO.getHZSQDTXX();
//购方申请
if(StringUtils.equals(OrderInfoEnum.SPECIAL_INVOICE_REASON_1100000000.getKey(), hzsqdtxx.getSQSM()) ||
StringUtils.equals(OrderInfoEnum.SPECIAL_INVOICE_REASON_1010000000.getKey(), hzsqdtxx.getSQSM())){
if (StringUtils.equals(OrderInfoEnum.SPECIAL_INVOICE_REASON_1100000000.getKey(), hzsqdtxx.getSQSM()) ||
StringUtils.equals(OrderInfoEnum.SPECIAL_INVOICE_REASON_1010000000.getKey(), hzsqdtxx.getSQSM())) {
hzsqdscpc1.setSQLB(ConfigureConstant.STRING_1);
}
//销方申请
if(StringUtils.equals(OrderInfoEnum.SPECIAL_INVOICE_REASON_0000000100.getKey(), hzsqdtxx.getSQSM())){
if (StringUtils.equals(OrderInfoEnum.SPECIAL_INVOICE_REASON_0000000100.getKey(), hzsqdtxx.getSQSM())) {
hzsqdscpc1.setSQLB(ConfigureConstant.STRING_0);
}
}
@ -1404,7 +1415,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
String terminalCode = simsBackService.getTerminalCode(hzsqdscReq.getHZSQDSCPC().getNSRSBH(), null);
if (StringUtils.isBlank(terminalCode)) {
log.warn("{}企业未配置税控设备,税号:{}", LOGGER_MSG, hzsqdscReq.getHZSQDSCPC().getNSRSBH());
hzsqdscRsp.setZTDM(StringUtils.leftPad(OrderInfoContentEnum.COMMON_ERROR.getKey(),6,"0"));
hzsqdscRsp.setZTDM(StringUtils.leftPad(OrderInfoContentEnum.COMMON_ERROR.getKey(), 6, "0"));
hzsqdscRsp.setZTXX(OrderInfoContentEnum.COMMON_ERROR.getMessage());
return hzsqdscRsp;
}
@ -1428,7 +1439,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
if (!OrderInfoContentEnum.SUCCESS.getKey().equals(String.valueOf(result.get(OrderManagementConstant.CODE)))) {
log.error("{}红字申请单上传数据自动匹配受理点失败:{}", LOGGER_MSG, checkInvParam);
hzsqdscRsp.setZTDM(result.get(OrderManagementConstant.CODE) == null ? ConfigureConstant.STRING_009999
: StringUtils.leftPad(String.valueOf(result.get(OrderManagementConstant.CODE)),6,"0"));
: StringUtils.leftPad(String.valueOf(result.get(OrderManagementConstant.CODE)), 6, "0"));
hzsqdscRsp.setZTXX(result.get(OrderManagementConstant.MESSAGE) == null ? "红字申请单上传数据自动匹配受理点失败"
: String.valueOf(result.get(OrderManagementConstant.MESSAGE)));
return hzsqdscRsp;
@ -1481,7 +1492,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
}
//如果为调用税控版本的方格,需要调用税控接口,如果为订单的需要发送指令
if(CommonUtils.judgeIsFgTerminalNew(terminalCode, fgSkKpShList, sh)){
if (CommonUtils.judgeIsFgTerminalNew(terminalCode, fgSkKpShList, sh)) {
String uploadUrl = invoiceConfig.configFgApplicationUpload();
//当对外接口一批次上传多条红字申请单时,按单条轮询上传
@ -1493,7 +1504,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
hzsqdscReq1.setHZSQDSCZXX(HZSQDSCZXX);
HzfpsqbsReq req = BeanTransitionUtils.transitionSpecialInvoiceRushRedV3(hzsqdscReq1, sldid, kpjh, fplx, fplb);
HpUploadResponse hpUploadResponse = HttpInvoiceRequestUtil.redInvoiceUpload(uploadUrl, req, terminalCode,fgSkKpShList,sh);
HpUploadResponse hpUploadResponse = HttpInvoiceRequestUtil.redInvoiceUpload(uploadUrl, req, terminalCode, fgSkKpShList, sh);
String statusCode = hpUploadResponse.getResult().getStatusCode();
String statusMsg = hpUploadResponse.getResult().getStatusMessage();
@ -1501,25 +1512,25 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
hzsqdscjg.setSQDH("");
hzsqdscjg.setXXBBH("");
List<HpUploadResponseHzfpsqbsc> hpUploadResponseHzfpsqbscList = hpUploadResponse.getResult().getResponse_HZFPSQBSC();
if(CollectionUtil.isNotEmpty(hpUploadResponseHzfpsqbscList)
&& Objects.nonNull(hpUploadResponseHzfpsqbscList.get(0))){
if (CollectionUtil.isNotEmpty(hpUploadResponseHzfpsqbscList)
&& Objects.nonNull(hpUploadResponseHzfpsqbscList.get(0))) {
HpUploadResponseHzfpsqbsc hpUploadResponseHzfpsqbsc = hpUploadResponseHzfpsqbscList.get(0);
hzsqdscjg.setSQDH(hpUploadResponseHzfpsqbsc.getSQDH());
hzsqdscjg.setXXBBH(hpUploadResponseHzfpsqbsc.getXXBBH());
}
if(ConfigureConstant.STRING_0000.equals(statusCode)){
if (ConfigureConstant.STRING_0000.equals(statusCode)) {
hzsqdscjg.setZTDM(OrderInfoEnum.SPECIAL_INVOICE_STATUS_TZD0501.getKey());
hzsqdscjg.setZTXX(OrderInfoEnum.SPECIAL_INVOICE_STATUS_TZD0501.getValue());
}else{
} else {
hzsqdscjg.setZTDM(statusCode);
hzsqdscjg.setZTXX(statusMsg);
}
hzsqdscjgs.add(hzsqdscjg);
}else{
} else {
//存放上传信息到redis队列
fangGeService.saveMqttToRedis(hzsqdscReq.getHZSQDSCPC().getNSRSBH(), sldid, OrderInfoEnum.FANGGE_INTERFACE_TYPE_2.getKey(), hzsqdsczxx.getHZSQDTXX().getSQBSCQQLSH(),false);
fangGeService.saveMqttToRedis(hzsqdscReq.getHZSQDSCPC().getNSRSBH(), sldid, OrderInfoEnum.FANGGE_INTERFACE_TYPE_2.getKey(), hzsqdsczxx.getHZSQDTXX().getSQBSCQQLSH(), false);
//消费下一条数据
fangGeService.handleRedisMsg(hzsqdscReq.getHZSQDSCPC().getNSRSBH(), sldid);
@ -1530,8 +1541,8 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
hzsqdscjgs.add(hzsqdscjg);
}
if(Objects.nonNull(specialInvoiceReversal)
&& !SPECIAL_INVOICE_STATUS_TZD0500.getKey().equals(specialInvoiceReversal.getStatusCode())){
if (Objects.nonNull(specialInvoiceReversal)
&& !SPECIAL_INVOICE_STATUS_TZD0500.getKey().equals(specialInvoiceReversal.getStatusCode())) {
//如果数据库存在该红字信息表,返回数据库中的红字信息表状态
HzsqdscjgBO hzsqdscjg1 = new HzsqdscjgBO();
hzsqdscjg1.setSQBSCQQLSH(hzsqdtxx.getSQBSCQQLSH());
@ -1541,8 +1552,8 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
hzsqdscjg1.setXXBBH(specialInvoiceReversal.getXxbbh());
//如果是新版方格,税控接口返回失败时对外接口返回税控接口的错误信息
if(CommonUtils.judgeIsFgTerminalNew(terminalCode, fgSkKpShList, sh)
&& !ConfigureConstant.STRING_0000.equals(hzsqdscjg.getZTDM())){
if (CommonUtils.judgeIsFgTerminalNew(terminalCode, fgSkKpShList, sh)
&& !ConfigureConstant.STRING_0000.equals(hzsqdscjg.getZTDM())) {
hzsqdscjg1.setZTDM(hzsqdscjg.getZTDM());
hzsqdscjg1.setZTXX(hzsqdscjg.getZTXX());
hzsqdscjg1.setXXBBH(hzsqdscjg.getXXBBH());
@ -1565,7 +1576,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
//组装对外接口出参数据
hzsqdscRsp.setHZSQDSCJG(hzsqdscjgsReturn);
} else if(CommonUtils.judgeNewInterface(terminalCode)){
} else if (CommonUtils.judgeNewInterface(terminalCode)) {
//上传成功的红字申请单集合
List<HpUploadResponse> successHpUploadResponseList = new ArrayList<>(hzsqdscReq.getHZSQDSCZXX().size());
@ -1585,22 +1596,22 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
log.debug("{},转换后数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(req));
String uploadUrl = invoiceConfig.configApplicationUpload();
HpUploadResponse redInvoiceUpload = HttpInvoiceRequestUtil.redInvoiceUpload(uploadUrl, req, terminalCode, fgSkKpShList,sh);
HpUploadResponse redInvoiceUpload = HttpInvoiceRequestUtil.redInvoiceUpload(uploadUrl, req, terminalCode, fgSkKpShList, sh);
List<HpUploadResponseHzfpsqbsc> hpUploadResponseHzfpsqbscList = redInvoiceUpload.getResult().getResponse_HZFPSQBSC();
//是否存在申请单明细信息
boolean isExistHpUploadResponseHzfpsqbsc = CollectionUtil.isNotEmpty(hpUploadResponseHzfpsqbscList)
&& Objects.nonNull(hpUploadResponseHzfpsqbscList.get(0));
if(ConfigureConstant.STRING_0000.equals(redInvoiceUpload.getCode())
&& isExistHpUploadResponseHzfpsqbsc
&& (SPECIAL_INVOICE_STATUS_TZD0000.getKey().equals(hpUploadResponseHzfpsqbscList.get(0).getSTATUS_CODE())
if (ConfigureConstant.STRING_0000.equals(redInvoiceUpload.getCode())
&& isExistHpUploadResponseHzfpsqbsc
&& (SPECIAL_INVOICE_STATUS_TZD0000.getKey().equals(hpUploadResponseHzfpsqbscList.get(0).getSTATUS_CODE())
|| SPECIAL_INVOICE_STATUS_TZD0001.getKey().equals(hpUploadResponseHzfpsqbscList.get(0).getSTATUS_CODE())
|| SPECIAL_INVOICE_STATUS_TZD1000.getKey().equals(hpUploadResponseHzfpsqbscList.get(0).getSTATUS_CODE()))){
|| SPECIAL_INVOICE_STATUS_TZD1000.getKey().equals(hpUploadResponseHzfpsqbscList.get(0).getSTATUS_CODE()))) {
successHpUploadResponseList.add(redInvoiceUpload);
} else {
failHpUploadResponseList.add(redInvoiceUpload);
}
successHpUploadResponseList.add(redInvoiceUpload);
} else {
failHpUploadResponseList.add(redInvoiceUpload);
}
}
//合并所有红字发票申请单上传结果
@ -1611,7 +1622,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
List<HpUploadResponseHzfpsqbsc> hpUploadResponseHzfpsqbscList = new ArrayList<>(10);
for (HpUploadResponse hpUploadResponse : hpUploadResponseList) {
if(ConfigureConstant.STRING_0000.equals(hpUploadResponse.getCode())){
if (ConfigureConstant.STRING_0000.equals(hpUploadResponse.getCode())) {
hpUploadResponseHzfpsqbscList.addAll(hpUploadResponse.getResult().getResponse_HZFPSQBSC());
} else {
HpUploadResponseHzfpsqbsc hpUploadResponseHzfpsqbsc = new HpUploadResponseHzfpsqbsc();
@ -1626,11 +1637,11 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
redInvoiceUpload.getResult().setResponse_HZFPSQBSC(hpUploadResponseHzfpsqbscList);
hzsqdscRsp = BeanTransitionUtils.transitionSpecialInvoiceRushRedRspV3(redInvoiceUpload);
if(hzsqdscReq.getHZSQDSCZXX().size() == failHpUploadResponseList.size()){
if (hzsqdscReq.getHZSQDSCZXX().size() == failHpUploadResponseList.size()) {
//红字申请单批量上传全部失败
hzsqdscRsp.setZTDM(OrderInfoContentEnum.CHECK_ISS7PRI_SC_060002.getKey());
hzsqdscRsp.setZTXX(OrderInfoContentEnum.CHECK_ISS7PRI_SC_060002.getMessage());
} else if(hzsqdscReq.getHZSQDSCZXX().size() == successHpUploadResponseList.size()) {
} else if (hzsqdscReq.getHZSQDSCZXX().size() == successHpUploadResponseList.size()) {
//红字申请单批量上传全部成功
hzsqdscRsp.setZTDM(OrderInfoContentEnum.CHECK_ISS7PRI_SC_060000.getKey());
hzsqdscRsp.setZTXX(OrderInfoContentEnum.CHECK_ISS7PRI_SC_060000.getMessage());
@ -1648,7 +1659,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
log.debug("{},转换后数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(req));
String uploadUrl = invoiceConfig.configRedInvoiceUpload();
HpUploadResponse redInvoiceUpload = HttpInvoiceRequestUtil.redInvoiceUpload(uploadUrl, req, terminalCode, fgSkKpShList,sh);
HpUploadResponse redInvoiceUpload = HttpInvoiceRequestUtil.redInvoiceUpload(uploadUrl, req, terminalCode, fgSkKpShList, sh);
hzsqdscRsp = BeanTransitionUtils.transitionSpecialInvoiceRushRedRspV3(redInvoiceUpload);
//更新数据库
@ -1707,7 +1718,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
String terminalCode = simsBackService.getTerminalCode(hzsqdxzReq.getNSRSBH(), null);
if (StringUtils.isBlank(terminalCode)) {
log.warn("{}企业未配置税控设备,税号:{}", LOGGER_MSG, hzsqdxzReq.getNSRSBH());
hzsqdxzRsp.setZTDM(StringUtils.leftPad(OrderInfoContentEnum.COMMON_ERROR.getKey(),6,"0"));
hzsqdxzRsp.setZTDM(StringUtils.leftPad(OrderInfoContentEnum.COMMON_ERROR.getKey(), 6, "0"));
hzsqdxzRsp.setZTXX(OrderInfoContentEnum.COMMON_ERROR.getMessage());
return hzsqdxzRsp;
}
@ -1715,14 +1726,14 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
log.info("税盘编码:{}", terminalCode);
//方格税盘特殊处理
String fgSkKpShList = baseServiceConfig.getFgSkKpShList();
if (CommonUtils.judgeIsFgTerminalOld(terminalCode,fgSkKpShList,sh)) {
if (CommonUtils.judgeIsFgTerminalOld(terminalCode, fgSkKpShList, sh)) {
/**
* 请求协议转换
*/
HpInvoiceRequest hpInvocieRequest = BeanTransitionUtils.transitionDownSpecialInvoiceV3(hzsqdxzReq, sldid, kpjh, fplx, fplb);
HpResponseBean redInvoiceDown = specialInvoiceService.downloadSpecialInvoiceReversalFg(hpInvocieRequest,terminalCode);
HpResponseBean redInvoiceDown = specialInvoiceService.downloadSpecialInvoiceReversalFg(hpInvocieRequest, terminalCode);
hzsqdxzRsp = BeanTransitionUtils.transitionDownSpecialInvoiceRspV3(redInvoiceDown);
recodeXxbtsbs(hzsqdxzRsp);
} else {
@ -1732,8 +1743,8 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
HpInvoiceRequest hpInvocieRequest = BeanTransitionUtils.transitionDownSpecialInvoiceV3(hzsqdxzReq, sldid, kpjh, fplx, fplb);
//调用下载前自动轮训可用开票点进行赋值
List<SearchFjh> searchFjhList = unifyService.getFjh(hzsqdxzReq.getNSRSBH(), "", "",terminalCode);
if(CollectionUtil.isEmpty(searchFjhList)){
List<SearchFjh> searchFjhList = unifyService.getFjh(hzsqdxzReq.getNSRSBH(), "", "", terminalCode);
if (CollectionUtil.isEmpty(searchFjhList)) {
log.error("{}红字申请单下载获取分机为空!,请求信息为:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(hpInvocieRequest));
hzsqdxzRsp.setZTDM(ConfigureConstant.STRING_009999);
hzsqdxzRsp.setZTXX("红字申请单下载获取分机为空");
@ -1747,7 +1758,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
for (SearchFjh searchFjh : searchFjhList) {
hpInvocieRequest.setKPJH(searchFjh.getFjh());
if(CommonUtils.judgeIsFgTerminalNew(terminalCode,fgSkKpShList,sh)) {
if (CommonUtils.judgeIsFgTerminalNew(terminalCode, fgSkKpShList, sh)) {
hpInvocieRequest.setKPJH(searchFjh.getJqbh());
}
@ -1755,24 +1766,24 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
if (CommonUtils.judgeNewInterface(terminalCode)) {
downUrl = invoiceConfig.configApplicationDownload();
}
if(CommonUtils.judgeIsFgTerminalNew(terminalCode,fgSkKpShList,sh)){
if (CommonUtils.judgeIsFgTerminalNew(terminalCode, fgSkKpShList, sh)) {
downUrl = invoiceConfig.configFgApplicationDownload();
}
HpResponseBean redInvoiceDown = HttpInvoiceRequestUtil.redInvoiceDown(downUrl, hpInvocieRequest, terminalCode,fgSkKpShList,sh);
HpResponseBean redInvoiceDown = HttpInvoiceRequestUtil.redInvoiceDown(downUrl, hpInvocieRequest, terminalCode, fgSkKpShList, sh);
//如果调用税控红字信息表下载接口异常,轮询下一个分机
if(ExceptionContentEnum.HZSQD_UPLOAD_ERROR_999999.getKey().equals(redInvoiceDown.getCode())){
if (ExceptionContentEnum.HZSQD_UPLOAD_ERROR_999999.getKey().equals(redInvoiceDown.getCode())) {
failRedInvoiceDownList.add(redInvoiceDown);
continue;
}
//如果下载成功,继续轮询下一个分机
if(CollectionUtil.isNotEmpty(redInvoiceDown.getResult().getRedinvreqbillxx())){
if (CollectionUtil.isNotEmpty(redInvoiceDown.getResult().getRedinvreqbillxx())) {
successRedInvoiceDownList.add(redInvoiceDown);
}
}
HpResponseBean redInvoiceDown;
//如果轮询分机都下载失败则返回第一个分机失败信息
if(searchFjhList.size() == CollectionUtil.size(failRedInvoiceDownList)){
if (searchFjhList.size() == CollectionUtil.size(failRedInvoiceDownList)) {
redInvoiceDown = failRedInvoiceDownList.get(0);
} else {
redInvoiceDown = successRedInvoiceDownList.get(0);
@ -1782,7 +1793,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
for (HpResponseBean hpResponseBean : successRedInvoiceDownList) {
redinvreqbillxx.addAll(hpResponseBean.getResult().getRedinvreqbillxx());
}
if(CollectionUtil.isNotEmpty(redinvreqbillxx)){
if (CollectionUtil.isNotEmpty(redinvreqbillxx)) {
redInvoiceDown.getResult().setRedinvreqbillxx(redinvreqbillxx);
}
}
@ -1864,58 +1875,58 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
try {
//校验前补充数据
//清单项目名称(税控发票修复功能)
if(!StringUtils.equals(ConfigurerInfo.INTERFACE_VERSION_V5, interfaceVersion)
&& !StringUtils.equals(ConfigurerInfo.INTERFACE_VERSION_V6, interfaceVersion)){
if (!StringUtils.equals(ConfigurerInfo.INTERFACE_VERSION_V5, interfaceVersion)
&& !StringUtils.equals(ConfigurerInfo.INTERFACE_VERSION_V6, interfaceVersion)) {
DdfpxxBO ddfpxx = ddfpzxx.getDDFPXX();
if(Objects.nonNull(ddfpxx)){
if (Objects.nonNull(ddfpxx)) {
//补全清单项目名称
if(StringUtils.isBlank(ddfpxx.getQDXMMC()) &&
StringUtils.isNotBlank(ddfpxx.getQDBZ())){
if (StringUtils.isBlank(ddfpxx.getQDXMMC()) &&
StringUtils.isNotBlank(ddfpxx.getQDBZ())) {
String qdxmmcConstant = ConfigureConstant.XJXHQD;
if (OrderInfoEnum.INVOICE_BILLING_TYPE_1.getKey().equals(ddfpxx.getKPLX())) {
qdxmmcConstant = ConfigureConstant.XJZSXHQD;
}
if(StringUtils.equals(OrderInfoEnum.QDBZ_CODE_1.getKey(),ddfpxx.getQDBZ()) ||
StringUtils.equals(OrderInfoEnum.QDBZ_CODE_3.getKey(),ddfpxx.getQDBZ())){
if (StringUtils.equals(OrderInfoEnum.QDBZ_CODE_1.getKey(), ddfpxx.getQDBZ()) ||
StringUtils.equals(OrderInfoEnum.QDBZ_CODE_3.getKey(), ddfpxx.getQDBZ())) {
ddfpxx.setQDXMMC(qdxmmcConstant);
}
}
//补全编码表版本号
if(StringUtils.isBlank(ddfpxx.getBMBBBH())){
if (StringUtils.isBlank(ddfpxx.getBMBBBH())) {
ddfpxx.setBMBBBH(baseServiceConfig.configBmbbbh());
}
//如果是全电发票,发票行性质,优惠政策标识需要特殊处理
if(CommonUtils.judgeIsQdfp("", ddfpxx.getFPLXDM())){
if (CommonUtils.judgeIsQdfp("", ddfpxx.getFPLXDM())) {
ddfpzxx.getDDMXXX().forEach(ddmxxxBO -> {
//发票行性质
ddmxxxBO.setFPHXZ(CommonUtils.transFphxz(ddmxxxBO.getFPHXZ()));
//优惠政策标识、增值税特殊管理、零税率标识
if(StringUtils.isNotBlank(ddmxxxBO.getYHZCBS())){
if (StringUtils.isNotBlank(ddmxxxBO.getYHZCBS())) {
String zzstsgl = CommonUtils.transLocalZzstsgl(ddmxxxBO.getYHZCBS());
//免税和不征税需要设置零税率标识,如其他零税率标识设置为空,
if(OrderInfoEnum.ORDER_QD_YHZCBS_03.getValue().equals(zzstsgl)){
if (OrderInfoEnum.ORDER_QD_YHZCBS_03.getValue().equals(zzstsgl)) {
ddmxxxBO.setLSLBS(OrderInfoEnum.LSLBS_1.getKey());
ddmxxxBO.setYHZCBS(OrderInfoEnum.YHZCBS_1.getKey());
ddmxxxBO.setZZSTSGL(zzstsgl);
} else if(OrderInfoEnum.ORDER_QD_YHZCBS_04.getValue().equals(zzstsgl)){
} else if (OrderInfoEnum.ORDER_QD_YHZCBS_04.getValue().equals(zzstsgl)) {
ddmxxxBO.setLSLBS(OrderInfoEnum.LSLBS_2.getKey());
ddmxxxBO.setYHZCBS(OrderInfoEnum.YHZCBS_1.getKey());
ddmxxxBO.setZZSTSGL(zzstsgl);
} else {
if(DecimalCalculateUtil.stringCompare(ConfigureConstant.STRING_000,CommonUtils.formatSl(ddmxxxBO.getSL())) == 0){
if (DecimalCalculateUtil.stringCompare(ConfigureConstant.STRING_000, CommonUtils.formatSl(ddmxxxBO.getSL())) == 0) {
ddmxxxBO.setLSLBS(OrderInfoEnum.LSLBS_3.getKey());
ddmxxxBO.setYHZCBS(OrderInfoEnum.YHZCBS_0.getKey());
ddmxxxBO.setZZSTSGL("");
}else {
} else {
ddmxxxBO.setLSLBS("");
ddmxxxBO.setYHZCBS(OrderInfoEnum.YHZCBS_1.getKey());
ddmxxxBO.setZZSTSGL(zzstsgl);
}
}
}else {
} else {
ddmxxxBO.setYHZCBS(OrderInfoEnum.YHZCBS_0.getKey());
ddmxxxBO.setZZSTSGL("");
}
@ -2001,7 +2012,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
/*
* 订单业务bean
*/
List<OrderInfo> insertOrder = buildOrderInfo(ddfpzxx, sourceType, terminalCode,entId,qdfwlx);
List<OrderInfo> insertOrder = buildOrderInfo(ddfpzxx, sourceType, terminalCode, entId, qdfwlx);
/**
* 全电发票业务bean
@ -2100,24 +2111,24 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
try {
//校验前补充数据
//清单项目名称(税控发票修复功能)
if(!StringUtils.equals(ConfigurerInfo.INTERFACE_VERSION_V5, interfaceVersion)
&& !StringUtils.equals(ConfigurerInfo.INTERFACE_VERSION_V6, interfaceVersion)){
if (!StringUtils.equals(ConfigurerInfo.INTERFACE_VERSION_V5, interfaceVersion)
&& !StringUtils.equals(ConfigurerInfo.INTERFACE_VERSION_V6, interfaceVersion)) {
DdfpxxBO ddfpxx = ddfpzxx.getDDFPXX();
if(Objects.nonNull(ddfpxx)){
if (Objects.nonNull(ddfpxx)) {
//补全清单项目名称
if(StringUtils.isBlank(ddfpxx.getQDXMMC()) &&
StringUtils.isNotBlank(ddfpxx.getQDBZ())){
if (StringUtils.isBlank(ddfpxx.getQDXMMC()) &&
StringUtils.isNotBlank(ddfpxx.getQDBZ())) {
String qdxmmcConstant = ConfigureConstant.XJXHQD;
if (OrderInfoEnum.INVOICE_BILLING_TYPE_1.getKey().equals(ddfpxx.getKPLX())) {
qdxmmcConstant = ConfigureConstant.XJZSXHQD;
}
if(StringUtils.equals(OrderInfoEnum.QDBZ_CODE_1.getKey(),ddfpxx.getQDBZ()) ||
StringUtils.equals(OrderInfoEnum.QDBZ_CODE_3.getKey(),ddfpxx.getQDBZ())){
if (StringUtils.equals(OrderInfoEnum.QDBZ_CODE_1.getKey(), ddfpxx.getQDBZ()) ||
StringUtils.equals(OrderInfoEnum.QDBZ_CODE_3.getKey(), ddfpxx.getQDBZ())) {
ddfpxx.setQDXMMC(qdxmmcConstant);
}
}
//补全编码表版本号
if(StringUtils.isBlank(ddfpxx.getBMBBBH())){
if (StringUtils.isBlank(ddfpxx.getBMBBBH())) {
ddfpxx.setBMBBBH(baseServiceConfig.configBmbbbh());
}
}
@ -2181,7 +2192,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
/*
* 订单业务bean
*/
List<OrderInfo> insertOrder = buildOrderInfo(ddfpzxx, sourceType, terminalCode,entId,qdfwlx);
List<OrderInfo> insertOrder = buildOrderInfo(ddfpzxx, sourceType, terminalCode, entId, qdfwlx);
/*
* 订单明细业务bean
*/
@ -3496,7 +3507,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
DyResponse dyResponse = new DyResponse();
String fgSkKpShList = baseServiceConfig.getFgSkKpShList();
if (CommonUtils.judgeIsFgTerminalOld(terminalCode,fgSkKpShList,sh)) {
if (CommonUtils.judgeIsFgTerminalOld(terminalCode, fgSkKpShList, sh)) {
//新增校验,验证方格客户端是否在线,如果不在线直接返回异常
boolean subscriptions = unifyService.querySpzxzt(fpdyReqBO.getNSRSBH(),
invoicePrintPackageDetailList.get(0).getFjh(), terminalCode);
@ -3529,13 +3540,13 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
fangGeService.saveInvoicePrintInfo(printInfo);
//如果为调用税控版本的方格,需要调用税控接口,如果为订单的需要发送指令
if(CommonUtils.judgeIsFgTerminalNew(terminalCode,fgSkKpShList,sh)){
if (CommonUtils.judgeIsFgTerminalNew(terminalCode, fgSkKpShList, sh)) {
String fgInvoicePrint = invoiceConfig.configFgInvoicePrint();
dyRequest.setInvoicePrintPackageDetailList(invoicePrintPackageDetailList);
dyResponse = HttpInvoiceRequestUtil.batchPrint(fgInvoicePrint, dyRequest, terminalCode,fgSkKpShList,sh);
dyResponse = HttpInvoiceRequestUtil.batchPrint(fgInvoicePrint, dyRequest, terminalCode, fgSkKpShList, sh);
String statusCode = dyResponse.getCode();
String statusMsg = dyResponse.getMsg();
@ -3544,11 +3555,11 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
dyResponse.setMsg(statusMsg);
}else{
} else {
//存放打印信息到redis队列
fangGeService.saveMqttToRedis(dyRequestExtend.getNsrsbh(), dyRequestExtend.getFjh(),
OrderInfoEnum.FANGGE_INTERFACE_TYPE_5.getKey(), printInfo.getFpdypch(),false);
OrderInfoEnum.FANGGE_INTERFACE_TYPE_5.getKey(), printInfo.getFpdypch(), false);
//消费下一条数据
fangGeService.handleRedisMsg(dyRequestExtend.getNsrsbh(), dyRequestExtend.getFjh());
}
@ -3564,7 +3575,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
} else if (CommonUtils.judgeNewInterface(terminalCode)) {
requestUrl = invoiceConfig.configPrintInvoiceInfo();
}
dyResponse = HttpInvoiceRequestUtil.batchPrint(requestUrl, dyRequest, terminalCode, fgSkKpShList,sh);
dyResponse = HttpInvoiceRequestUtil.batchPrint(requestUrl, dyRequest, terminalCode, fgSkKpShList, sh);
}
if (ConfigureConstant.STRING_0000.equals(dyResponse.getCode())) {
@ -3642,7 +3653,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
//3.调用税控接口
String fgSkKpShList = baseServiceConfig.getFgSkKpShList();
if(CommonUtils.judgeIsFgTerminalOld(terminalCode,fgSkKpShList,sh)){
if (CommonUtils.judgeIsFgTerminalOld(terminalCode, fgSkKpShList, sh)) {
//方格
FgkpSkDyjmcCxParam fgkpSkDyjmcCxParam = new FgkpSkDyjmcCxParam();
fgkpSkDyjmcCxParam.setXhfNsrsbh(NsrsbhUtils.transShListByXhfNsrsbh(dyjcxReqBO.getNSRSBH()));
@ -3651,7 +3662,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
fgkpSkDyjmcCxParam, terminalCode);
if (ConfigureConstant.STRING_0000.equals(skDyjByShZl.getCode())) {
List<FgkpSkDyjEntity> fgkpSkDyjEntityList = skDyjByShZl.getData();
if(CollectionUtil.isEmpty(fgkpSkDyjEntityList)){
if (CollectionUtil.isEmpty(fgkpSkDyjEntityList)) {
throw new OrderReceiveException(OrderInfoContentEnum.QUERYPRINTER_000005);
}
@ -3681,10 +3692,10 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
if (CommonUtils.judgeNewInterface(terminalCode)) {
dyjListUrl = invoiceConfig.configQueryPrinterInfo();
}
if (CommonUtils.judgeIsFgTerminalNew(terminalCode,fgSkKpShList,sh)) {
if (CommonUtils.judgeIsFgTerminalNew(terminalCode, fgSkKpShList, sh)) {
dyjListUrl = invoiceConfig.configFgQueryPrinterInfo();
}
DydResponse dyResponse = HttpInvoiceRequestUtil.queryDydxxcxList(dyjListUrl, dydListRequst, terminalCode,fgSkKpShList,sh);
DydResponse dyResponse = HttpInvoiceRequestUtil.queryDydxxcxList(dyjListUrl, dydListRequst, terminalCode, fgSkKpShList, sh);
if (ConfigureConstant.STRING_0000.equals(dyResponse.getCode())) {
// 4.响应协议Bean转换
@ -3710,9 +3721,9 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
}
//如果打印机名称不为空,根据打印机名称过滤从税控底层查询到打印机列表
if(StringUtils.isNotBlank(dyjcxReqBO.getDYJMC())){
if (StringUtils.isNotBlank(dyjcxReqBO.getDYJMC())) {
List<Dyjxx> dyjxxList = dyjcxRspBO.getDYJXX();
if(CollectionUtil.isNotEmpty(dyjxxList)){
if (CollectionUtil.isNotEmpty(dyjxxList)) {
List<Dyjxx> dyjxxes = dyjxxList.stream()
.filter(dyjxx -> StringUtils.equals(dyjcxReqBO.getDYJMC(), dyjxx.getDYJMC()))
.collect(Collectors.toList());
@ -3795,7 +3806,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
qyjbxxCxRspBO.setNSRMC(taxEquipmentInfo.getXhfMc());
//税控
if(CollectionUtil.isNotEmpty(taxpayermachineinfos)){
if (CollectionUtil.isNotEmpty(taxpayermachineinfos)) {
List<Sbjcxx> sbjcxxList = new ArrayList<>(taxpayermachineinfos.size());
taxpayermachineinfos.forEach(taxpayerMachineInfo -> {
Sbjcxx sbjcxx = new Sbjcxx();
@ -3805,20 +3816,20 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
List<Fplxdmxx> fplxdmxxList = new ArrayList<>(invoiceTypeList.size());
for (InvoiceType invoiceType : invoiceTypeList) {
//过滤掉 41(卷票) 数据
if(StringUtils.equals(OrderInfoEnum.ORDER_INVOICE_TYPE_41.getKey(),invoiceType.getFPZLDM())){
if (StringUtils.equals(OrderInfoEnum.ORDER_INVOICE_TYPE_41.getKey(), invoiceType.getFPZLDM())) {
continue;
}
Fplxdmxx fplxdmxx = new Fplxdmxx();
BeanUtils.copyProperties(invoiceType, fplxdmxx);
fplxdmxx.setFPLXDM(CommonUtils.transFplxdm(invoiceType.getFPZLDM()));
if(StringUtils.isNotBlank(invoiceType.getSJBSQSSJ())){
fplxdmxx.setSJBSQSSJ(DateUtil.format(DateUtil.parse(invoiceType.getSJBSQSSJ()),ConfigureConstant.DATE_FORMAT_DATE));
if (StringUtils.isNotBlank(invoiceType.getSJBSQSSJ())) {
fplxdmxx.setSJBSQSSJ(DateUtil.format(DateUtil.parse(invoiceType.getSJBSQSSJ()), ConfigureConstant.DATE_FORMAT_DATE));
}
if(StringUtils.isNotBlank(invoiceType.getZXBSSJ())){
fplxdmxx.setZXBSSJ(DateUtil.format(DateUtil.parse(invoiceType.getZXBSSJ()),ConfigureConstant.DATE_FORMAT_DATE));
if (StringUtils.isNotBlank(invoiceType.getZXBSSJ())) {
fplxdmxx.setZXBSSJ(DateUtil.format(DateUtil.parse(invoiceType.getZXBSSJ()), ConfigureConstant.DATE_FORMAT_DATE));
}
if(StringUtils.isNotBlank(invoiceType.getKPJZRQ())){
fplxdmxx.setKPJZRQ(DateUtil.format(DateUtil.parse(invoiceType.getKPJZRQ()),ConfigureConstant.DATE_FORMAT_DATE));
if (StringUtils.isNotBlank(invoiceType.getKPJZRQ())) {
fplxdmxx.setKPJZRQ(DateUtil.format(DateUtil.parse(invoiceType.getKPJZRQ()), ConfigureConstant.DATE_FORMAT_DATE));
}
fplxdmxxList.add(fplxdmxx);
}
@ -3830,7 +3841,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
}
//全电
if(Objects.nonNull(qdjcxx) && Objects.nonNull(qdjcxx.getJCXX())){
if (Objects.nonNull(qdjcxx) && Objects.nonNull(qdjcxx.getJCXX())) {
qyjbxxCxRspBO.setNSRMC(qdjcxx.getJCXX().getNSRMC());
QdjcxxBO qdjcxxBO = new QdjcxxBO();
JcxxBO jcxxBO = new JcxxBO();
@ -4742,7 +4753,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
} else {
// 查询表 `order_invoice_info`
OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfoByFpdmAndFphm(zfcxReqBO.getFPDM(), zfcxReqBO.getFPHM(), shList);
if(Objects.nonNull(orderInvoiceInfo)){
if (Objects.nonNull(orderInvoiceInfo)) {
zfBz = orderInvoiceInfo.getZfBz();
zfsj = orderInvoiceInfo.getZfsj();
} else {
@ -4834,7 +4845,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
* @author <a href="tivenninesongs@163.com">yaoxuguang</a>
* @date 2020/4/24
*/
private List<OrderInfo> buildOrderInfo(DdfpzxxBO ddfpzxx, String sourceType, String terminalCode,String entId,String qdfwlx) {
private List<OrderInfo> buildOrderInfo(DdfpzxxBO ddfpzxx, String sourceType, String terminalCode, String entId, String qdfwlx) {
List<OrderInfo> insertOrder = CollectionUtil.newArrayList();
OrderInfo orderInfo = BeanTransitionUtils.transitionInsertOrderInfo(ddfpzxx.getDDFPXX());
if (StringUtils.isEmpty(orderInfo.getDdh())) {
@ -4843,7 +4854,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
/**
* 设置订单数据类型
*/
if(CommonUtils.judgeIsQdfp("", orderInfo.getFpzlDm())){
if (CommonUtils.judgeIsQdfp("", orderInfo.getFpzlDm())) {
orderInfo.setDdlx(OrderInfoEnum.ORDER_TYPE_0.getKey());
} else {
if (OrderInfoEnum.ORDER_SOURCE_7.getKey().equals(sourceType)) {
@ -4869,8 +4880,8 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
orderInfo.setBz(resultBz);
//记录当前税控设备代码
orderInfo.setSksbCode(terminalCode);
if(CommonUtils.judgeIsQdfp("", orderInfo.getFpzlDm())
&& StringUtils.isNotBlank(CommonUtils.getQdSksbdm(qdfwlx))){
if (CommonUtils.judgeIsQdfp("", orderInfo.getFpzlDm())
&& StringUtils.isNotBlank(CommonUtils.getQdSksbdm(qdfwlx))) {
orderInfo.setSksbCode(CommonUtils.getQdSksbdm(qdfwlx));
}
@ -4886,14 +4897,15 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
/**
* 构建全电订单信息bean
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2022-10-20
*
* @param ddfpzxx 订单发票全数据返回协议bean
* @return java.util.List<com.dxhy.order.model.qd.OrderInfoQd>
* @author <a href="yaoxuguang@ele-cloud.com">yaoxuguang</a>
* @date 2022-10-20
*/
private List<OrderInfoQd> buildOrderInfoQd(DdfpzxxBO ddfpzxx) {
List<OrderInfoQd> orderInfoQdList = new ArrayList<>(5);
if(Objects.nonNull(ddfpzxx.getQDTXXBO())){
if (Objects.nonNull(ddfpzxx.getQDTXXBO())) {
OrderInfoQd orderInfoQd = BeanTransitionUtils.transitionOrderInfoQd(ddfpzxx.getQDTXXBO());
orderInfoQdList.add(orderInfoQd);
}
@ -4953,7 +4965,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
/**
* 设置订单数据类型
*/
if(CommonUtils.judgeIsQdfp("", orderInfo.getFpzlDm())){
if (CommonUtils.judgeIsQdfp("", orderInfo.getFpzlDm())) {
orderProcessInfo.setDdly(OrderInfoEnum.ORDER_SOURCE_1.getKey());
} else {
if (OrderInfoEnum.ORDER_TYPE_6.getKey().equals(orderInfo.getDdlx())) {
@ -4978,7 +4990,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
orderProcessInfo.setId(orderInfo.getProcessId());
//订单表id
orderProcessInfo.setOrderInfoId(orderInfo.getId());
if(StringUtils.isNotBlank(orderInfo.getSksbCode())){
if (StringUtils.isNotBlank(orderInfo.getSksbCode())) {
orderProcessInfo.setSksbCode(orderInfo.getSksbCode());
}
insertProcessInfo.add(orderProcessInfo);
@ -5025,7 +5037,7 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
orderInvoiceInfo.setId(apiInvoiceCommonService.getGenerateShotKey());
//发票来源和订单来源共用
orderInvoiceInfo.setFply(orderProcessInfo.getDdly());
if(StringUtils.isNotBlank(orderInfo.getSksbCode())){
if (StringUtils.isNotBlank(orderInfo.getSksbCode())) {
orderInvoiceInfo.setSksbdm(orderInfo.getSksbCode());
}
@ -5061,19 +5073,19 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
specialInvoiceReversalEntity.setSqdh(hzsqdtxx.getSQBSCQQLSH());
//如果是旧版方格,赋值申请单号
if(CommonUtils.judgeIsFgTerminalOld(terminalCode, baseServiceConfig.getFgSkKpShList(),
hzsqdscReq.getHZSQDSCPC().getNSRSBH())){
if (CommonUtils.judgeIsFgTerminalOld(terminalCode, baseServiceConfig.getFgSkKpShList(),
hzsqdscReq.getHZSQDSCPC().getNSRSBH())) {
//为了防止并发生成相同的申请单号加分布式锁,锁的过期时间为1秒
String hzxxbscSqdhRedisLock = String.format(RedisConstant.REDIS_ORDER_LOCK__FG_HZXXBSC_SQDH_KEY, kpjh);
String redisValue = hzsqdscReq.getHZSQDSCPC().getNSRSBH() + "," + kpjh;
if(redisService.setNx(hzxxbscSqdhRedisLock, redisValue, 1)){
if (redisService.setNx(hzxxbscSqdhRedisLock, redisValue, 1)) {
//方格重新生成申请单号,税号对应的12位机器编号 + 12位时间
String sqdh = kpjh + DateUtil.format(new Date(), ConfigureConstant.DATE_FORMAT_DATE_YMDHMS).substring(2);
specialInvoiceReversalEntity.setSqdh(sqdh);
Thread.sleep(1000);
redisService.del(redisValue);
} else {
synchronized (this){
synchronized (this) {
Thread.sleep(1000);
//方格重新生成申请单号,税号对应的12位机器编号 + 12位时间
String sqdh = kpjh + DateUtil.format(new Date(), ConfigureConstant.DATE_FORMAT_DATE_YMDHMS).substring(2);
@ -5308,4 +5320,105 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
ddfpdrRsp.setZTXX("接收请求成功,等待异步处理");
return ddfpdrRsp;
}
/**
* 同步集团商品税编表
*
* @param groupTaxReqBO
* @param secretId
* @return
*/
@Override
public GroupTaxRespBO syncGroupTax(List<GroupTaxReqBO> groupTaxReqBO, String secretId) {
GroupTaxRespBO resp = GroupTaxRespBO.build(OrderInfoContentEnum.SUCCESS);
// 根据商品名称和和商品编码查下商品编码公司是否已经录入了物料编码
try {
for (GroupTaxReqBO tempBO : groupTaxReqBO) {
GroupTaxRespBO tempResp = syncGroupTax(tempBO, secretId);
if (tempResp.isFailed()) {
return tempResp;
}
}
} catch (OrderReceiveException e) {
log.error("{}同步集团商品税编表异常", LOGGER_MSG_V4, e);
resp.setZTDM(e.getCode());
resp.setZTXX(e.getMessage());
}
return resp;
}
private GroupTaxRespBO syncGroupTax(GroupTaxReqBO groupTaxReqBO, String secretId) throws OrderReceiveException {
if (StringUtils.isEmpty(groupTaxReqBO.getSpmc())) {
throw new OrderReceiveException(OrderInfoContentEnum.SYNC_GROUP_TAX_009999.getKey(), OrderInfoContentEnum.SYNC_GROUP_TAX_009999.getMessage());
}
GroupTaxRespBO groupTaxRespBO = new GroupTaxRespBO();
if (StringUtils.isNotBlank(secretId)) {
String dbSecretId = commonDisposeService.getAuthMap(groupTaxReqBO.getNsrsbh());
if (!secretId.equals(dbSecretId)) {
log.error("{}请求税号与企业维护secretId不一致!", LOGGER_MSG);
groupTaxRespBO.setZTDM(OrderInfoContentEnum.SYNC_GROUP_TAX_009998.getKey());
groupTaxRespBO.setZTXX(OrderInfoContentEnum.SYNC_GROUP_TAX_009998.getMessage());
return groupTaxRespBO;
}
}
// 处理、保存明细
// 先从集团群里查询税收分类编码是否存在
GroupTaxClassCodeEntity myEntity = groupTaxClassCodeMapper.selectGroupTaxClassCodeByNsrsbhAndCode(groupTaxReqBO.getNsrsbh(), groupTaxReqBO.getEncoding());
if (myEntity == null) {
myEntity = new GroupTaxClassCodeEntity();
}
// 查询税收分类编码
TaxClassCodeEntity taxClassCodeEntity = taxClassCodeService.queryTaxClassCodeFromCacheBySpmcOrMs(groupTaxReqBO.getSpmc());
if (taxClassCodeEntity == null) {
log.info("syncGroupTax:{}税收分类编码不存在!", LOGGER_MSG);
groupTaxRespBO.setZTDM(OrderInfoContentEnum.SYNC_GROUP_TAX_009997.getKey());
groupTaxRespBO.setZTXX(OrderInfoContentEnum.SYNC_GROUP_TAX_009997.getMessage());
return groupTaxRespBO;
}
// 维护GroupTaxClassCodeEntity 参考的GroupTaxClassCodeServiceImpl -> transtionGroupTaxClassCode
myEntity.setMerchandiseName(groupTaxReqBO.getSpmc());
myEntity.setEncoding(groupTaxReqBO.getEncoding());
//分组id
myEntity.setGroupId(null);
//税收编码
myEntity.setTaxClassCode(taxClassCodeEntity.getSpbm());
//税收名称
myEntity.setTaxClassificationName(taxClassCodeEntity.getSpmc());
myEntity.setTaxClassAbbreviation(taxClassCodeEntity.getSpjc());
myEntity.setDescription(taxClassCodeEntity.getSm());
//规格型号
myEntity.setSpecificationModel(null);
//计量单位
myEntity.setMeteringUnit(groupTaxReqBO.getUnit());
//单价
myEntity.setUnitPrice(null);
//数据来源
myEntity.setDataSource(TaxClassCodeEnum.DATA_SOURCE_5.getKey());
//匹配状态
myEntity.setMatchingState(TaxClassCodeEnum.MATCHING_STATE_0.getKey());
//数据状态
myEntity.setDataState(TaxClassCodeEnum.DATA_STATE_1.getKey());
//共享状态
myEntity.setShareState(TaxClassCodeEnum.SHARE_STATE_1.getKey());
myEntity.setDeptId(null);
if (StringUtils.isEmpty(myEntity.getId())) {
myEntity.setId(baseService.getGenerateShotKey());
myEntity.setCreateTime(new Date());
// 插入
groupTaxClassCodeMapper.insert(myEntity);
} else {
// 更新
groupTaxClassCodeMapper.updateByPrimaryKey(myEntity);
}
groupTaxRespBO.setZTDM(OrderInfoContentEnum.SYNC_GROUP_TAX_000000.getKey());
groupTaxRespBO.setZTXX(OrderInfoContentEnum.SYNC_GROUP_TAX_000000.getMessage());
return groupTaxRespBO;
}
}

Loading…
Cancel
Save