Merge remote-tracking branch 'origin/dev-snyx' into release

# Conflicts:
#	order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java
release
wangrangrang 2 years ago
commit d78fddb2ce
  1. 2
      order-management-base-service/pom.xml
  2. 2
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java
  3. 4
      order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java
  4. 26
      order-management-common/src/main/java/com/dxhy/order/constant/ResponseStatusEnum.java
  5. 4
      order-management-common/src/main/java/com/dxhy/order/model/OrderProcessInfo.java
  6. 5
      order-management-common/src/main/java/com/dxhy/order/model/queue/FpTsMqData.java
  7. 4
      order-management-common/src/main/java/com/dxhy/order/model/queue/ZfTsMqData.java
  8. 2
      order-management-consumer/pom.xml
  9. 10
      order-management-consumer/src/main/java/com/dxhy/order/consumer/constant/ExcelErrorMessageEnum.java
  10. 3
      order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/InterfaceRequestDataMapper.java
  11. 8
      order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java
  12. 542
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java
  13. 42
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java
  14. 6
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/ReceiveOrderController.java
  15. 4
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java
  16. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderProcessService.java
  17. 8
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/GenerateReadyOpenOrderServiceImpl.java
  18. 477
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderExcelReadServiceImpl.java
  19. 146
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java
  20. 5
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderProcessServiceImpl.java
  21. 8
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/ticketpool/service/impl/PushTicketPoolServiceImpl.java
  22. 3
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java
  23. 8
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java
  24. 5
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/invalid/ZffptsV5.java
  25. 6
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/order/DdfpxxV5.java
  26. 9
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV5.java
  27. 6
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/SDEnregyServiceImpl.java
  28. 80
      order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java
  29. 27
      order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionV5Utils.java
  30. 6
      order-management-consumer/src/main/resources/bootstrap.yaml
  31. BIN
      order-management-consumer/src/main/resources/download/NcpImportExcel.xlsx
  32. BIN
      order-management-consumer/src/main/resources/download/OrderExcel.xlsx
  33. BIN
      order-management-consumer/src/main/resources/download/QdfpImportExcel.xlsx
  34. 7
      order-management-consumer/src/main/resources/mybatis/mapper/InterfaceRequestDataMapper.xml
  35. 121
      order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml
  36. 2
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInvoiceInfoMapper.java
  37. 1
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java
  38. 12
      order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml

@ -344,7 +344,7 @@
<dependency>
<groupId>com.dxhy.base</groupId>
<artifactId>sims-base-file-operate</artifactId>
<version>6.1.4.2-BASE</version>
<version>6.1.4.3-BASE</version>
<scope>compile</scope>
</dependency>

@ -292,6 +292,8 @@ public class BaseServiceConfig{
@Value("${order.push.po.ecKey:}")
private String ecKey;
@Value("${order.push.yx.ecKey:}")
private String yxKey;
/**
* 调用山能PO username
*/

@ -407,6 +407,9 @@ public enum OrderInfoEnum {
SYS_SOURCE_DSXT("DSXT","DSXT"),
SYS_SOURCE_DSXT01("DSXT01","DSXT01"),
SYS_SOURCE_DSXT02("DSXT02","DSXT02"),
SYS_SOURCE_SNYXX("SNYXX","SNYXX"),
SYS_SOURCE_S4("S4","S4"),
SYS_SOURCE_EXCEL("FPPTEXCEL","FPPTEXCEL"),
/**
* 订单类型0:原始订单,1:拆分后订单,2:合并后订单,3:系统冲红订单,4:自动开票订单,5:作废重开订单;6:历史数据订单;7:发票修复数据
@ -1273,6 +1276,7 @@ public enum OrderInfoEnum {
*/
INTERFACE_BUSINESS_ID_FPKJTS("FI843","发票开具回推"),
INTERFACE_BUSINESS_ID_FPKJ("FI840","发票开具"),
INTERFACE_BUSINESS_SNYX_FPKJ("FI883","发票开具"),
INTERFACE_BUSINESS_ID_FPZFTS("FI844","发票作废回推"),
INTERFACE_BUSINESS_ID_GSCLIENT("FI846","获取公司client"),
INTERFACE_BUSINESS_ID_DDZTGX("FI841","订单状态更新"),

@ -0,0 +1,26 @@
package com.dxhy.order.constant;
/**
* 通用code定义
*/
public enum ResponseStatusEnum {
INTERNAL_SERVER_ERROR("9999", "系统异常请联系管理员");
private String key;
private String value;
ResponseStatusEnum(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return this.key;
}
public String getValue() {
return this.value;
}
}

@ -193,6 +193,10 @@ public class OrderProcessInfo implements Serializable {
* 公司代码
*/
private String gsdm;
/**
* 公司对应client
*/
private String gsClients;
/**
* 驳回状态
*/

@ -25,6 +25,11 @@ public class FpTsMqData implements Serializable {
*/
private String fpqqlsh;
/**
* 发票请求流水号
*/
private String pushBackLsh;
/**
* 发票代码
* (作废推送需要)

@ -32,4 +32,8 @@ public class ZfTsMqData implements Serializable {
*/
private String fphm;
private String xtly;
private String bzdh;
}

@ -325,7 +325,7 @@
<dependency>
<groupId>com.dxhy.base</groupId>
<artifactId>sims-base-file-operate</artifactId>
<version>6.1.4.2-BASE</version>
<version>6.1.4.3-BASE</version>
<scope>compile</scope>
</dependency>

@ -172,11 +172,11 @@ public enum ExcelErrorMessageEnum {
/**
* 项目数量小数点后超过8位
*/
ORDERINFO_XMSL_OVERLENGTHEIGHT("9636", "数量超出最大位数25位,小数点后8位,全电票小数点后15位"),
ORDERINFO_XMSL_OVERLENGTHEIGHT("9636", "数量超出最大位数25位,小数点后8位,全电票小数点后13位"),
/**
* 项目单价小数点后超过8位
*/
ORDERINFO_XMDJ_OVERLENGTHEIGHT("9637", "单价超出最大长度25位,小数点后8位,全电票小数点后15位"),
ORDERINFO_XMDJ_OVERLENGTHEIGHT("9637", "单价超出最大长度25位,小数点后8位,全电票小数点后13位"),
/**
* 备注超过200位
*/
@ -262,8 +262,10 @@ public enum ExcelErrorMessageEnum {
ORDERINFO_SSFLBM_SL_NULL("9611", "该商品税率没有维护,不能为空"),
ORDERINFO_9701("9701", "企业自编码长度超过18位"),
ORDERINFO_9701("9701", "物料编码长度超过18位"),
ORDERINFO_9700("9700", "物料编码不允许为空"),
ORDERINFO_9702("9702", "编码表版本号长度超过10位"),
ORDERINFO_9703("9703", "税额长度超过30位"),

@ -1,6 +1,7 @@
package com.dxhy.order.consumer.dao;
import com.dxhy.order.model.InterfaceRequestData;
import org.apache.ibatis.annotations.Param;
public interface InterfaceRequestDataMapper {
int deleteByPrimaryKey(String id);
@ -11,6 +12,8 @@ public interface InterfaceRequestDataMapper {
InterfaceRequestData selectByPrimaryKey(String id);
InterfaceRequestData selectByBatchId(@Param("batchId") String batchId, @Param("ywlx")String ywlx);
int updateByPrimaryKeySelective(InterfaceRequestData record);
int updateByPrimaryKeyWithBLOBs(InterfaceRequestData record);

@ -51,6 +51,10 @@ public interface OrderProcessInfoMapper {
*/
OrderProcessInfo queryOrderProcessInfoByFpqqlsh(@Param("fpqqlsh") String fpqqlsh, @Param("shList") List<String> shList);
List<OrderProcessInfo> queryOrderProcessInfoByBzdh(@Param("bzdh") String bzdh, @Param("shList")List<String> shList);
List<OrderProcessInfo> queryOrderProcessInfoByBzdhs(@Param("bzdhs") List<String> bzdhs, @Param("shList")List<String> shList);
/**
* 根据批次号查询订单处理表数据
*
@ -160,4 +164,8 @@ public interface OrderProcessInfoMapper {
@Param("shList") List<String> shList, @Param("entList") List<String> entList);
List<Map> getOrderMessageByMap(@Param("map") Map map);
List<OrderProcessInfo> selectOrderProcessByFpqqlshs(@Param("fpqqlshs") List<String> fpqqlshs, @Param("shList") List<String> shList);
List<OrderProcessInfo> selectOrderProcessByYFpdmHm(@Param("yFpdmHms") List<String> yFpdmHms, @Param("shList") List<String> shList);
}

@ -16,6 +16,7 @@ import com.dxhy.order.consumer.config.OpenApiConfig;
import com.dxhy.order.consumer.dao.GsClientMapper;
import com.dxhy.order.consumer.dao.PushInfoRecordMapper;
import com.dxhy.order.consumer.model.PushInfoRecord;
import com.dxhy.order.consumer.dao.InterfaceRequestDataMapper;
import com.dxhy.order.consumer.model.protocol.CommonResponse;
import com.dxhy.order.consumer.model.protocol.ResponseData;
import com.dxhy.order.consumer.model.protocol.ResponseStatus;
@ -38,6 +39,7 @@ import com.dxhy.order.consumer.openapi.protocol.po.EsOutput;
import com.dxhy.order.consumer.openapi.protocol.po.IsInput;
import com.dxhy.order.consumer.openapi.protocol.po.PoCommonRequestParam;
import com.dxhy.order.consumer.openapi.protocol.po.PoCommonResponseParam;
import com.dxhy.order.consumer.openapi.protocol.po.generateinvoice.sap.FpkjReqSap;
import com.dxhy.order.consumer.openapi.protocol.po.generateinvoicepush.sap.FpkjtsMxSap;
import com.dxhy.order.consumer.openapi.protocol.po.generateinvoicepush.sap.FpkjtsReqSap;
import com.dxhy.order.consumer.openapi.protocol.po.voidinvoicepush.sap.FpzftsReqSap;
@ -90,6 +92,7 @@ import java.math.BigDecimal;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* 推送企业数据servcie实现类
@ -172,6 +175,9 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
@Resource
private PushInfoRecordMapper pushInfoRecordMapper;
@Resource
private InterfaceRequestDataMapper interfaceRequestDataMapper;
@Resource
private GsClientMapper gsClientMapper;
@Value("${snyx.salt:}")
@ -237,7 +243,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
//推送票池
try {
if (StringUtils.isNotBlank(commonTsMqData.getFpTsMqData().getFpdm()) && StringUtils.isNotBlank(commonTsMqData.getFpTsMqData().getFphm())) {
if (StringUtils.isNotBlank(commonTsMqData.getFpTsMqData().getFphm())) {
pushTicketPoolService.pushTicketPool(commonTsMqData.getFpTsMqData().getFpdm(), commonTsMqData.getFpTsMqData().getFphm(), commonTsMqData.getNsrsbh());
}
@ -252,13 +258,15 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
OrderProcessInfo orderProcessInfo = orderProcessService.queryOrderProcessInfoByFpqqlsh(orderInvoiceInfo.getFpqqlsh(), null);
commonTsMqData.setNsrsbh(orderInvoiceInfo.getXhfNsrsbh());
if(StrUtil.isNotBlank(orderProcessInfo.getBzdh())){
zfTsMqData.setXtly(orderProcessInfo.getXtly());
zfTsMqData.setBzdh(orderProcessInfo.getBzdh());
commonPush(commonTsMqData);
}else {
log.error("{},{}{}发票作废推送失败,没有报账单号",LOGGER_MSG,orderInvoiceInfo.getFpdm(),orderInvoiceInfo.getFphm());
}
//推送票池
try {
if (StringUtils.isNotBlank(commonTsMqData.getZfTsMqData().getFpdm()) && StringUtils.isNotBlank(commonTsMqData.getZfTsMqData().getFphm())) {
if (StringUtils.isNotBlank(commonTsMqData.getZfTsMqData().getFphm())) {
pushTicketPoolService.pushTicketPool(commonTsMqData.getZfTsMqData().getFpdm(), commonTsMqData.getZfTsMqData().getFphm(), commonTsMqData.getNsrsbh());
}
@ -472,7 +480,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
String error=String.format("税号:%s,组装请求报文为空,不进行推送数据",fpTsMqData.getNsrsbh());
log.warn(error);
failPush(null,JsonUtils.getInstance().toJsonString(fpTsMqData),error,error,pushInfo,fpTsMqData.getPushType());
continue;
break;
}
try {
//推送影像系统
@ -520,6 +528,11 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
Map map = Maps.newHashMap();
map.put("ec-key",baseServiceConfig.getEcKey());
result = HttpUtils.sendPoWithHead(pushInfo.getPushUrl(), fptsParam,baseServiceConfig.getPoUserName(),baseServiceConfig.getPoPassword(),map);
} else if (OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(orderProcessInfo.getXtly()) && StringUtils.isNotBlank(pushInfo.getByzd1())
&& pushInfo.getByzd1().equals(orderProcessInfo.getXtly())) {
Map map = Maps.newHashMap();
map.put("authorization",MD5.getMd5Encode(baseServiceConfig.getYxKey()));
result = HttpUtils.sendPoWithHead(pushInfo.getPushUrl(), fptsParam,baseServiceConfig.getPoUserName(),baseServiceConfig.getPoPassword(),map);
}
} else {
result = HttpUtils.doPost(pushInfo.getPushUrl(), requestMap);
@ -532,27 +545,32 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
|| ConfigurerInfo.INTERFACE_VERSION_V6.equals(pushInfo.getVersionIdent())) {
DxhyInterfaceResponse dxhyInterfaceResponse = JsonUtils.getInstance().parseObject(result, DxhyInterfaceResponse.class);
if (OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_1.getKey().equals(fpTsMqData.getPushType())) {
if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(xtly)){
//TODO 山能易行回传流水号重置
if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(xtly)||OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(xtly)) {
PoCommonResponseParam poCommonResponseParam = JsonUtils.getInstance().parseObject(result, PoCommonResponseParam.class);
EsOutput es_output = poCommonResponseParam.getES_OUTPUT();
String sapkey = es_output.getSAPKEY();
String ztype = es_output.getZTYPE();
String zmessage = es_output.getZMESSAGE();
List<DdfptsV5> resultList = new ArrayList<>();
DdfptsV5 ddfptsV5 = new DdfptsV5();
ddfptsV5.setDDQQLSH(fpTsMqData.getFpTsMqData().getFpqqlsh());
ddfptsV5.setNSRSBH("");
if(OrderInfoContentEnum.INVOICE_ERROR_CODE_OP_S.getKey().equals(ztype)){
ddfptsV5.setZTDM(ConfigureConstant.STRING_000000);
}else {
ddfptsV5.setZTDM(ConfigureConstant.STRING_9999);
String[] split = fpTsMqData.getFpTsMqData().getPushBackLsh().split(",");
for (String fpqqlsh : split) {
DdfptsV5 ddfptsV5 = new DdfptsV5();
ddfptsV5.setDDQQLSH(fpqqlsh);
ddfptsV5.setNSRSBH("");
if (OrderInfoContentEnum.INVOICE_ERROR_CODE_OP_S.getKey().equals(ztype)) {
ddfptsV5.setZTDM(ConfigureConstant.STRING_000000);
} else {
ddfptsV5.setZTDM(ConfigureConstant.STRING_9999);
}
ddfptsV5.setZTXX(zmessage);
resultList.add(ddfptsV5);
}
ddfptsV5.setZTXX(zmessage);
dxhyInterfaceResponse.setReturnCode(ConfigureConstant.STRING_000000);
dxhyInterfaceResponse.setReturnMessage("处理成功");
dxhyInterfaceResponse.setEncryptCode(ConfigurerInfo.ENCRYPTCODE_0);
dxhyInterfaceResponse.setZipCode(ConfigurerInfo.ENCRYPTCODE_0);
resultList.add(ddfptsV5);
dxhyInterfaceResponse.setContent(Base64Encoding.encode(JsonUtils.getInstance().toJsonString(resultList)));
}else{
dxhyInterfaceResponse = JsonUtils.getInstance().parseObject(result, DxhyInterfaceResponse.class);
@ -680,68 +698,61 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
return r;
}
public R sendImageSys(String content, String pushType, PushInfo pushInfo, Long id){
R r = new R();
public void sendImageSys(String content, String pushType, PushInfo pushInfo, Long id){
PushInfo pushInfo1 = new PushInfo();
pushInfo1.setId(pushInfo.getId());
pushInfo1.setByzd1("YXXT");
DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class);
DdfpxxV5 ddfpxx = ddfpzxxV5.getDDFPXX();
OutputInvoiceRequest outputInvoiceRequest = buildInvoiceRequest(ddfpxx);
if(outputInvoiceRequest.getInvoiceList() != null && outputInvoiceRequest.getInvoiceList().size() > 0){
String fplxdm = ddfpxx.getFPLXDM();
boolean b = OrderInfoEnum.ORDER_INVOICE_TYPE_001.getKey().equals(fplxdm)
|| OrderInfoEnum.ORDER_INVOICE_TYPE_002.getKey().equals(fplxdm)
|| OrderInfoEnum.ORDER_INVOICE_TYPE_026.getKey().equals(fplxdm)
|| OrderInfoEnum.ORDER_INVOICE_TYPE_028.getKey().equals(fplxdm);
if(!b){
String error=String.format("invoiceNo:%s not eleInvoice do not push",outputInvoiceRequest.getInvoiceList().get(0).getInvoiceNumber());
log.info(error);
failPush(id,content,error,error,pushInfo1,pushType);
r.put(OrderManagementConstant.CODE, "9999");
r.put(OrderManagementConstant.ALL_MESSAGE, error);
return r;
}
}
List<DdfpzxxV5> ddfpzxxV5s = JsonUtils.getInstance().listBeanCopy(content, DdfpzxxV5.class);
//DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class);
for (DdfpzxxV5 ddfpzxxV5 : ddfpzxxV5s) {
try {
String md5Encode = MD5.getMd5Encode(outputInvoiceRequest.getBillNum() + invoiceConfig.getSapSalt() );
Map<String, String> headerMap = Maps.newHashMap();
headerMap.put("Authorization",md5Encode);
String param = JSONObject.toJSONString(outputInvoiceRequest);
if(StringUtils.isNotBlank(param) && param.length() > 400){
param = param.substring(0,400);
DdfpxxV5 ddfpxx = ddfpzxxV5.getDDFPXX();
OutputInvoiceRequest outputInvoiceRequest = buildInvoiceRequest(ddfpxx);
if(outputInvoiceRequest.getInvoiceList() != null && outputInvoiceRequest.getInvoiceList().size() > 0){
String fplxdm = ddfpxx.getFPLXDM();
boolean b = OrderInfoEnum.ORDER_INVOICE_TYPE_001.getKey().equals(fplxdm)
|| OrderInfoEnum.ORDER_INVOICE_TYPE_002.getKey().equals(fplxdm)
|| OrderInfoEnum.ORDER_INVOICE_TYPE_026.getKey().equals(fplxdm)
|| OrderInfoEnum.ORDER_INVOICE_TYPE_028.getKey().equals(fplxdm);
if(!b){
String error=String.format("invoiceNo:%s not eleInvoice do not push",outputInvoiceRequest.getInvoiceList().get(0).getInvoiceNumber());
log.info(error);
failPush(id,content,error,error,pushInfo1,pushType);
return;
}
}
log.info("call image check request url:{},header:{},parameter:{}",invoiceConfig.getSnYxUrl(),JSONObject.toJSONString(headerMap),param);
String body = HttpRequest.post(invoiceConfig.getSnYxUrl()).addHeaders(headerMap).body(JSONObject.toJSONString(outputInvoiceRequest)).timeout(300000).execute().body();
log.info("call image check return parameter:{}",body);
JSONObject jsonObject = JSONObject.parseObject(body);
String status = jsonObject.getString("status");//200 成功、 500 失败
String message = jsonObject.getString("message");
String data = jsonObject.getString("data");
if("200".equals(status)){
//成功
successPush(id,content,data,pushInfo1,pushType);
}else {
//失败
failPush(id,content,message,data,pushInfo1,pushType);
try {
String md5Encode = MD5.getMd5Encode(outputInvoiceRequest.getBillNum() + invoiceConfig.getSapSalt() );
Map<String, String> headerMap = Maps.newHashMap();
headerMap.put("Authorization",md5Encode);
String param = JSONObject.toJSONString(outputInvoiceRequest);
if(StringUtils.isNotBlank(param) && param.length() > 400){
param = param.substring(0,400);
}
log.info("call image check request url:{},header:{},parameter:{}",invoiceConfig.getSnYxUrl(),JSONObject.toJSONString(headerMap),param);
String body = HttpRequest.post(invoiceConfig.getSnYxUrl()).addHeaders(headerMap).body(JSONObject.toJSONString(outputInvoiceRequest)).timeout(300000).execute().body();
log.info("call image check return parameter:{}",body);
JSONObject jsonObject = JSONObject.parseObject(body);
String status = jsonObject.getString("status");//200 成功、 500 失败
String message = jsonObject.getString("message");
String data = jsonObject.getString("data");
if("200".equals(status)){
//成功
successPush(id,content,data,pushInfo1,pushType);
}else {
//失败
failPush(id,content,message,data,pushInfo1,pushType);
}
//暂时不保存状态
} catch (Exception e) {
String error=String.format("影像系统推送数据异常,%s ,推送类型为%s",e.getMessage(),pushType);
log.error(error);
e.printStackTrace();
failPush(id,content,error,e.getMessage(),pushInfo1,pushType);
return;
}
//暂时不保存状态
} catch (Exception e) {
String error=String.format("影像系统推送数据异常,%s ,推送类型为%s",e.getMessage(),pushType);
log.error(error);
e.printStackTrace();
failPush(id,content,error,e.getMessage(),pushInfo1,pushType);
r.put(OrderManagementConstant.CODE, "9999");
r.put(OrderManagementConstant.ALL_MESSAGE, error);
return r;
}
return r;
}
public static void main(String[] args) {
String salt = "e4b0190b2fadc0adbe54471ffd79a729";
}
@ -1092,7 +1103,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
if (OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_1.getKey().equals(commonTsMqData.getPushType())) {
//开票推送相关业务处理
FpTsMqData fpTsMqData = commonTsMqData.getFpTsMqData();
updatePushErrorMsgToDb(fpTsMqData.getFpqqlsh(), msg, shList);
updatePushErrorMsgToDb(fpTsMqData.getPushBackLsh(), msg, shList);
} else if (OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_2.getKey().equals(commonTsMqData.getPushType())) {
//作废推送相关业务处理
ZfTsMqData zfTsMqData = commonTsMqData.getZfTsMqData();
@ -1299,13 +1310,16 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
}
private void updatePushErrorMsgToDb(String fpqqlsh, String errorMessage, List<String> shList) {
OrderInvoiceInfo orderQuery = new OrderInvoiceInfo();
orderQuery.setFpqqlsh(fpqqlsh);
orderQuery.setPushStatus(OrderInfoEnum.PUSH_STATUS_2.getKey());
orderQuery.setInvoicePushSbyy(errorMessage);
int updateByPrimaryKeySelective = orderInvoiceInfoService.updateOrderInvoiceInfoByFpqqlsh(orderQuery, shList);
if (updateByPrimaryKeySelective <= 0) {
log.error("{}推送状态更新失败", LOGGER_MSG);
String[] split = fpqqlsh.split(",");
for (String fpqqlshItem : split) {
OrderInvoiceInfo orderQuery = new OrderInvoiceInfo();
orderQuery.setFpqqlsh(fpqqlshItem);
orderQuery.setPushStatus(OrderInfoEnum.PUSH_STATUS_2.getKey());
orderQuery.setInvoicePushSbyy(errorMessage);
int updateByPrimaryKeySelective = orderInvoiceInfoService.updateOrderInvoiceInfoByFpqqlsh(orderQuery, shList);
if (updateByPrimaryKeySelective <= 0) {
log.error("{}推送状态更新失败", LOGGER_MSG);
}
}
}
@ -1342,16 +1356,19 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
if (ObjectUtil.isNotEmpty(pushRspBO.getDDFPTS())) {
ddfptsBOList.addAll(pushRspBO.getDDFPTS());
} else {
DdfptsBO ddfptsBO = new DdfptsBO();
ddfptsBO.setDDQQLSH(fpqqlsh);
ddfptsBO.setNSRSBH(nsrsbh);
if (ConfigureConstant.STRING_0000.equals(pushRspBO.getZTDM()) || ConfigureConstant.STRING_000000.equals(pushRspBO.getZTDM())) {
ddfptsBO.setZTDM(ConfigureConstant.STRING_000000);
} else {
ddfptsBO.setZTDM(ConfigureConstant.STRING_009999);
}
String[] split = fpqqlsh.split(",");
for (String fpqqlshSplit : split) {
DdfptsBO ddfptsBO = new DdfptsBO();
ddfptsBO.setDDQQLSH(fpqqlshSplit);
ddfptsBO.setNSRSBH(nsrsbh);
if (ConfigureConstant.STRING_0000.equals(pushRspBO.getZTDM()) || ConfigureConstant.STRING_000000.equals(pushRspBO.getZTDM())) {
ddfptsBO.setZTDM(ConfigureConstant.STRING_000000);
} else {
ddfptsBO.setZTDM(ConfigureConstant.STRING_009999);
}
ddfptsBOList.add(ddfptsBO);
ddfptsBOList.add(ddfptsBO);
}
}
for (DdfptsBO ddfptsBO : ddfptsBOList) {
@ -1417,109 +1434,128 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
if(OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_1.getKey().equals(fpTsMqData.getPushType())){
OrderProcessInfo orderProcessInfo = orderProcessService.queryOrderProcessInfoByFpqqlsh(fpTsMqData.getFpTsMqData().getFpqqlsh(), null);
OrderInvoiceInfo orderInvoiceInfo1 = new OrderInvoiceInfo();
orderInvoiceInfo1.setFpqqlsh(orderProcessInfo.getFpqqlsh());
OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfo(orderInvoiceInfo1, null);
List<GsClient> gsClients = gsClientMapper.selectByGsdm(orderProcessInfo.getGsdm());
// OrderProcessInfo orderProcessInfo = orderProcessService.queryOrderProcessInfoByFpqqlsh(fpTsMqData.getFpTsMqData().getFpqqlsh(), null);
// OrderInvoiceInfo orderInvoiceInfo1 = new OrderInvoiceInfo();
// orderInvoiceInfo1.setFpqqlsh(orderProcessInfo.getFpqqlsh());
// OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfo(orderInvoiceInfo1, null);
// List<GsClient> gsClients = gsClientMapper.selectByGsdm(orderProcessInfo.getGsdm());
//发票开具推送
DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class);
DdfpxxV5 ddfpxx = ddfpzxxV5.getDDFPXX();
List<DdmxxxV5> ddmxxx = ddfpzxxV5.getDDMXXX();
List<DdfpzxxV5> ddfpzxxV5s = JsonUtils.getInstance().jsonToList(content, DdfpzxxV5.class);
//DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class);
List<FpkjtsReqSap> mainList = new ArrayList<>();
FpkjtsReqSap fpkjtsReqSap = new FpkjtsReqSap();
List<FpkjtsMxSap> itemList = new ArrayList<>();
//主信息
if(!OrderInfoEnum.SYS_SOURCE_FPPAGE.getKey().equals(orderProcessInfo.getXtly())){
fpkjtsReqSap.setZJSDH(orderProcessInfo.getOriginDdh());
}else {
fpkjtsReqSap.setZJSDH("");
}
fpkjtsReqSap.setZFPDM(ddfpxx.getFPDM());
fpkjtsReqSap.setZFPHM(ddfpxx.getFPHM());
fpkjtsReqSap.setZFPLX(CommonUtils.transToSnFplxdm(ddfpxx.getFPLXDM()));
fpkjtsReqSap.setZXFBM(ddfpxx.getXHFSBH());
fpkjtsReqSap.setZGFBH(ddfpxx.getGMFSBH());
fpkjtsReqSap.setZBHSJEY(ddfpxx.getHJJE());
fpkjtsReqSap.setZZSEY(ddfpxx.getHJSE());
fpkjtsReqSap.setZHSJEY(ddfpxx.getJSHJ());
fpkjtsReqSap.setZZBZ(ddfpxx.getBZ());
fpkjtsReqSap.setZFPZT(ConfigureConstant.STRING_0);//0-正常、1-作废
String formatKprq = "";
try {
Date date = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ddfpxx.getKPRQ());
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
formatKprq = sdf.format(date);
}catch (Exception e){
log.error("{}发票推送SAP格式化开票日期错误:{}",LOGGER_MSG,e);
}
fpkjtsReqSap.setZKPRQ(formatKprq);
fpkjtsReqSap.setZGFMC(ddfpxx.getGMFMC());
fpkjtsReqSap.setZGFSH(ddfpxx.getGMFSBH());
fpkjtsReqSap.setZXFMC(ddfpxx.getXHFMC());
fpkjtsReqSap.setZXFSH(ddfpxx.getXHFSBH());
fpkjtsReqSap.setZTID(ddfpxx.getFPDM()+ddfpxx.getFPHM()+ddfpxx.getFPLXDM());
fpkjtsReqSap.setZGFZH(ddfpxx.getGMFZH());
fpkjtsReqSap.setZGFDH(ddfpxx.getGMFDH());
fpkjtsReqSap.setZXFDH(ddfpxx.getXHFDH());
fpkjtsReqSap.setZXFZH(ddfpxx.getXHFZH());
fpkjtsReqSap.setZGSDM(orderProcessInfo.getGsdm());
fpkjtsReqSap.setZYWDJ(orderProcessInfo.getBzdh());
fpkjtsReqSap.setIMGID(orderInvoiceInfo.getDocuId());
if(OrderInfoEnum.SYS_SOURCE_DSXT01.getKey().equals(orderProcessInfo.getXtly()) ||
OrderInfoEnum.SYS_SOURCE_DSXT02.getKey().equals(orderProcessInfo.getXtly())){
fpkjtsReqSap.setPDFZJL(ddfpxx.getPDFZJL());
fpkjtsReqSap.setZJLLX(ddfpxx.getZJLLX());
}
//明细信息
ddmxxx.stream().forEach(f -> {
FpkjtsMxSap detail = new FpkjtsMxSap();
for (DdfpzxxV5 ddfpzxxV5 : ddfpzxxV5s) {
DdfpxxV5 ddfpxx = ddfpzxxV5.getDDFPXX();
List<DdmxxxV5> ddmxxx = ddfpzxxV5.getDDMXXX();
FpkjtsReqSap fpkjtsReqSap = new FpkjtsReqSap();
List<FpkjtsMxSap> itemList = new ArrayList<>();
//主信息
detail.setZJSDH(StringUtils.isNotBlank(orderProcessInfo.getOriginDdh())?orderProcessInfo.getOriginDdh():orderProcessInfo.getDdh());
// detail.setZJSDH(ddfpxx.getDDH());
detail.setZFPDM(ddfpxx.getFPDM());
detail.setZFPHM(ddfpxx.getFPHM());
detail.setZFPHH(f.getXH());
if(ObjectUtil.isNull(f.getZXBM()) || StrUtil.isBlank(f.getZXBM())){
detail.setMATNR("");
if(!OrderInfoEnum.SYS_SOURCE_FPPAGE.getKey().equals(ddfpxx.getXtly())){
fpkjtsReqSap.setZJSDH(ddfpxx.getDDH());
}else {
// DecimalFormat g1=new DecimalFormat("000000000000000000");
detail.setMATNR(f.getZXBM());
fpkjtsReqSap.setZJSDH("");
}
detail.setZGGXH(f.getGGXH());
detail.setZSLDW(f.getDW());
detail.setZZSL(f.getSPSL());
detail.setZTAX(new BigDecimal(f.getSL()).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString());
detail.setZBHSJEY(f.getJE());
detail.setZZSEY(f.getSE());
detail.setZHSJEY(new BigDecimal(f.getJE()).add(new BigDecimal(f.getSE())).toString());
if(StrUtil.isBlank(f.getDJ())){
detail.setZZDJFP("");
}else {
detail.setZZDJFP(f.getDJ());
// detail.setZZDJFP(new BigDecimal(f.getDJ()).multiply(new BigDecimal(f.getSL()).add(BigDecimal.ONE)).setScale(ConfigureConstant.INT_8,BigDecimal.ROUND_HALF_EVEN).toString());
fpkjtsReqSap.setZFPDM(ddfpxx.getFPDM());
fpkjtsReqSap.setZFPHM(ddfpxx.getFPHM());
fpkjtsReqSap.setZFPLX(CommonUtils.transToSnFplxdm(ddfpxx.getFPLXDM()));
fpkjtsReqSap.setZXFBM(ddfpxx.getXHFSBH());
fpkjtsReqSap.setZGFBH(ddfpxx.getGMFSBH());
fpkjtsReqSap.setZBHSJEY(ddfpxx.getHJJE());
fpkjtsReqSap.setZZSEY(ddfpxx.getHJSE());
fpkjtsReqSap.setZHSJEY(ddfpxx.getJSHJ());
fpkjtsReqSap.setZHSJE(ddfpxx.getJSHJ());
fpkjtsReqSap.setZZBZ(ddfpxx.getBZ());
fpkjtsReqSap.setZFPZT(ddfpxx.getZFBZ());//0-正常、1-作废
String formatKprq = "";
try {
Date date = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ddfpxx.getKPRQ());
SimpleDateFormat sdf = null;
if(OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(ddfpxx.getXtly())) {
sdf = new SimpleDateFormat("yyyy-MM-dd");
}else{
sdf = new SimpleDateFormat("yyyyMMdd");
}
formatKprq = sdf.format(date);
}catch (Exception e){
log.error("{}发票推送SAP格式化开票日期错误:{}",LOGGER_MSG,e);
}
detail.setINVOICEDATE(ddfpxx.getKPRQ());
detail.setINVOICETYPE(ddfpxx.getFPLXDM());
detail.setZHWMC(f.getXMMC());
detail.setZSM(ObjectUtil.isNull(smMap.get(f.getSL()))?"":smMap.get(f.getSL()).toString());
itemList.add(detail);
});
fpkjtsReqSap.setITITEM(itemList);
IsInput isInput = new IsInput();
isInput.setSYSID(OrderInfoEnum.SYS_SIGN_FP.getKey());
isInput.setIFYWID(OrderInfoEnum.INTERFACE_BUSINESS_ID_FPKJTS.getKey());
isInput.setBSKEY(apiInvoiceCommonMapperService.getGenerateShotKey());
isInput.setZORG("");
isInput.setZFILED5(gsClients.size()>0?gsClients.get(0).getClient():"");
mainList.add(fpkjtsReqSap);
String jsonString = JsonUtils.getInstance().toJsonString(mainList);
isInput.setZDATA(jsonString);
PoCommonRequestParam poCommonRequestParam = new PoCommonRequestParam();
poCommonRequestParam.setIS_INPUT(isInput);
ywxtParam = JsonUtils.getInstance().toJsonString(poCommonRequestParam);
fpkjtsReqSap.setZKPRQ(formatKprq);
fpkjtsReqSap.setZGFMC(ddfpxx.getGMFMC());
fpkjtsReqSap.setZGFSH(ddfpxx.getGMFSBH());
fpkjtsReqSap.setZXFMC(ddfpxx.getXHFMC());
fpkjtsReqSap.setZXFSH(ddfpxx.getXHFSBH());
fpkjtsReqSap.setZTID(ddfpxx.getFPDM()+ddfpxx.getFPHM()+ddfpxx.getFPLXDM());
fpkjtsReqSap.setZGFZH(ddfpxx.getGMFZH());
fpkjtsReqSap.setZGFDH(ddfpxx.getGMFDH());
fpkjtsReqSap.setZXFDH(ddfpxx.getXHFDH());
fpkjtsReqSap.setZXFZH(ddfpxx.getXHFZH());
fpkjtsReqSap.setZGSDM(ddfpxx.getCompanyCode());
fpkjtsReqSap.setZYWDJ(ddfpxx.getBillNum());
fpkjtsReqSap.setIMGID(ddfpxx.getDocuId());
fpkjtsReqSap.setZBZDH(ddfpxx.getBillNum());
// String zfbz = ddfpxx.getZFBZ();
// String chbz = ddfpxx.getCHBZ();
// fpkjtsReqSap.setZFPZT();
if(StringUtils.isNotBlank(ddfpxx.getYFPHM())){
fpkjtsReqSap.setZYFPDM(ddfpxx.getYFPDM());
fpkjtsReqSap.setZYFPHM(ddfpxx.getYFPHM());
fpkjtsReqSap.setZHZXXB(StringUtils.isNotBlank(ddfpxx.getHZXXBBH())?ddfpxx.getHZXXBBH():"");
}
if(OrderInfoEnum.SYS_SOURCE_DSXT01.getKey().equals(ddfpxx.getXtly()) ||
OrderInfoEnum.SYS_SOURCE_DSXT02.getKey().equals(ddfpxx.getXtly())){
fpkjtsReqSap.setPDFZJL(ddfpxx.getPDFZJL());
fpkjtsReqSap.setZJLLX(ddfpxx.getZJLLX());
}
//明细信息
ddmxxx.stream().forEach(f -> {
FpkjtsMxSap detail = new FpkjtsMxSap();
//主信息
detail.setZJSDH(ddfpxx.getDDH());
// detail.setZJSDH(ddfpxx.getDDH());
detail.setZFPDM(ddfpxx.getFPDM());
detail.setZFPHM(ddfpxx.getFPHM());
detail.setZFPHH(f.getXH());
if(ObjectUtil.isNull(f.getZXBM()) || StrUtil.isBlank(f.getZXBM())){
detail.setMATNR("");
}else {
// DecimalFormat g1=new DecimalFormat("000000000000000000");
detail.setMATNR(f.getZXBM());
}
detail.setZGGXH(f.getGGXH());
detail.setZSLDW(f.getDW());
detail.setZZSL(f.getSPSL());
detail.setZTAX(new BigDecimal(f.getSL()).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString());
detail.setZBHSJEY(f.getJE());
detail.setZZSEY(f.getSE());
detail.setZHSJEY(new BigDecimal(f.getJE()).add(new BigDecimal(f.getSE())).toString());
if(StrUtil.isBlank(f.getDJ())){
detail.setZZDJFP("");
}else {
detail.setZZDJFP(f.getDJ());
// detail.setZZDJFP(new BigDecimal(f.getDJ()).multiply(new BigDecimal(f.getSL()).add(BigDecimal.ONE)).setScale(ConfigureConstant.INT_8,BigDecimal.ROUND_HALF_EVEN).toString());
}
detail.setINVOICEDATE(ddfpxx.getKPRQ());
detail.setINVOICETYPE(ddfpxx.getFPLXDM());
detail.setZHWMC(f.getXMMC());
detail.setZSM(ObjectUtil.isNull(smMap.get(f.getSL()))?"":smMap.get(f.getSL()).toString());
itemList.add(detail);
});
fpkjtsReqSap.setITITEM(itemList);
IsInput isInput = new IsInput();
isInput.setSYSID(OrderInfoEnum.SYS_SIGN_FP.getKey());
isInput.setIFYWID(OrderInfoEnum.INTERFACE_BUSINESS_ID_FPKJTS.getKey());
isInput.setBSKEY(apiInvoiceCommonMapperService.getGenerateShotKey());
isInput.setZORG("");
isInput.setZFILED5(ddfpxx.getGsClients());
mainList.add(fpkjtsReqSap);
String jsonString = JsonUtils.getInstance().toJsonString(mainList);
isInput.setZDATA(jsonString);
PoCommonRequestParam poCommonRequestParam = new PoCommonRequestParam();
poCommonRequestParam.setIS_INPUT(isInput);
ywxtParam = JsonUtils.getInstance().toJsonString(poCommonRequestParam);
}
}else if(OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_2.getKey().equals(fpTsMqData.getPushType())){
OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfoByFpdmAndFphm(fpTsMqData.getZfTsMqData().getFpdm(), fpTsMqData.getZfTsMqData().getFphm(), null);
@ -1535,6 +1571,8 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
fpzftsReqSap.setZFPZT(ConfigureConstant.STRING_1);
if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(orderProcessInfo.getXtly())){
fpzftsReqSap.setZJSDH(orderProcessInfo.getOriginDdh());
}else if(OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(orderProcessInfo.getXtly())){
fpzftsReqSap.setZJSDH(zffptsV5.getDDH());
}else {
fpzftsReqSap.setZBZDH(orderProcessInfo.getBzdh());
}
@ -1574,30 +1612,24 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
}
String version = pushInfo.getVersionIdent();
String pushWjl = pushInfo.getPushWjl();
List<OrderProcessInfo> orderProcessInfoList = new ArrayList<>();
OrderProcessInfo orderProcessInfo = orderProcessService.queryOrderProcessInfoByFpqqlsh(fpTsMqData.getFpqqlsh(), shList);
List<GsClient> gsClients = gsClientMapper.selectByGsdm(orderProcessInfo.getGsdm());
log.info("{}推送接口orderProcessInfo数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderProcessInfo));
OrderInfo orderInfo = orderInfoService.selectOrderInfoByOrderId(orderProcessInfo.getOrderInfoId(), shList);
log.info("{}推送接口orderInfo数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderInfo));
List<OrderItemInfo> orderItemInfos = orderItemInfoService.selectOrderItemInfoByOrderId(orderProcessInfo.getOrderInfoId(), shList);
List<DdmxxxBO> ddmxxxList = BeanTransitionUtils.transitionOrderInvoiceItemV3(orderItemInfos);
List<OrderInvoiceItemBO> orderInvoiceItems = BeanTransitionUtils.transitionOrderInvoiceItem(orderItemInfos);
OrderInvoiceInfo orderInvoiceInfo1 = new OrderInvoiceInfo();
orderInvoiceInfo1.setFpqqlsh(orderProcessInfo.getFpqqlsh());
OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfo(orderInvoiceInfo1, shList);
log.info("{}推送接口orderInvoiceInfo数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderInvoiceInfo));
List<OrderProcessInfo> orderProcessInfoRelevantList = orderProcessService.findTopParentList(orderProcessInfo, shList);
List<DdkzxxBO> orderExtensionInfos = BeanTransitionUtils.transitionOrderExtensionInfos(orderProcessInfoRelevantList);
log.info("{}推送接口orderExtensionInfo数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderExtensionInfos));
/**
* 查询税控设备信息
*/
String terminalCode = orderInvoiceInfo.getSksbdm();
if(OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(orderProcessInfo.getXtly()) && new BigDecimal(orderProcessInfo.getKphjje()).compareTo(BigDecimal.ZERO) > 0){
List<OrderProcessInfo> orderProcessInfos = orderProcessService.queryOrderProcessInfoByBzdh(orderProcessInfo.getBzdh(), shList);
int count = (int)orderProcessInfos.stream().filter(t ->OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt())).count();
if(orderProcessInfos.size() != count){
return null;
}
orderProcessInfoList.addAll(orderProcessInfos);
String fpqqlsh = orderProcessInfos.stream().map(t -> t.getFpqqlsh()).collect(Collectors.joining(","));
fpTsMqData.setPushBackLsh(fpqqlsh);
log.info("山能易行发票回推重置流水号{}",fpqqlsh);
}else{
fpTsMqData.setPushBackLsh(orderProcessInfo.getFpqqlsh());
orderProcessInfoList.add(orderProcessInfo);
}
//判断推送版本
if (ConfigurerInfo.INTERFACE_VERSION_V5.equals(version)
@ -1605,9 +1637,11 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
List<DdfpzxxV5> ddfpzxxV5s = new ArrayList<>();
try {
DdfpzxxV5 interfaceOrderV5 = interfaceServiceV5.getInterfaceOrderV5(orderProcessInfo, shList, ConfigureConstant.STRING_0);
ddfpzxxV5s.add(interfaceOrderV5);
for (OrderProcessInfo processInfo : orderProcessInfoList) {
processInfo.setGsClients(gsClients.size()>0?gsClients.get(0).getClient():"");
DdfpzxxV5 interfaceOrderV5 = interfaceServiceV5.getInterfaceOrderV5(processInfo, shList, ConfigureConstant.STRING_0);
ddfpzxxV5s.add(interfaceOrderV5);
}
} catch (InterfaceException e) {
throw new OrderReceiveException(e.getCode(), e.getMessage());
@ -1617,6 +1651,25 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
content = JsonUtils.getInstance().toJsonString(ddfpzxxV5s);
} else if (ConfigurerInfo.INTERFACE_VERSION_V4.equals(version) || ConfigurerInfo.INTERFACE_VERSION_V3.equals(version)) {
OrderInfo orderInfo = orderInfoService.selectOrderInfoByOrderId(orderProcessInfo.getOrderInfoId(), shList);
log.info("{}推送接口orderInfo数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderInfo));
List<OrderItemInfo> orderItemInfos = orderItemInfoService.selectOrderItemInfoByOrderId(orderProcessInfo.getOrderInfoId(), shList);
List<DdmxxxBO> ddmxxxList = BeanTransitionUtils.transitionOrderInvoiceItemV3(orderItemInfos);
List<OrderInvoiceItemBO> orderInvoiceItems = BeanTransitionUtils.transitionOrderInvoiceItem(orderItemInfos);
OrderInvoiceInfo orderInvoiceInfo1 = new OrderInvoiceInfo();
orderInvoiceInfo1.setFpqqlsh(orderProcessInfo.getFpqqlsh());
OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfo(orderInvoiceInfo1, shList);
log.info("{}推送接口orderInvoiceInfo数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderInvoiceInfo));
List<OrderProcessInfo> orderProcessInfoRelevantList = orderProcessService.findTopParentList(orderProcessInfo, shList);
List<DdkzxxBO> orderExtensionInfos = BeanTransitionUtils.transitionOrderExtensionInfos(orderProcessInfoRelevantList);
log.info("{}推送接口orderExtensionInfo数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderExtensionInfos));
/**
* 查询税控设备信息
*/
String terminalCode = orderInvoiceInfo.getSksbdm();
//新版本请求参数组装response
DdfpcxRspBO ddfpcxRsp = new DdfpcxRspBO();
//新版本组装数据方式
@ -1813,42 +1866,42 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
}
} else {
//旧版本请求参数组装response
PushReqBO response = new PushReqBO();
//旧版本组装方式
List<CommonOrderInvocieBO> commonOrderInvocies = new ArrayList<>();
CommonOrderInvocieBO commonOrderInvocie = new CommonOrderInvocieBO();
log.info("==>推送旧的版本接口");
OrderInvoiceHeadBO orderInvoiceHead = BeanTransitionUtils.transitionOrderInvoiceHead(orderInfo, orderInvoiceInfo);
boolean fpdmhmDp = (OrderInfoEnum.ORDER_INVOICE_TYPE_51.getKey().equals(orderInvoiceInfo.getFpzlDm())
|| OrderInfoEnum.ORDER_INVOICE_TYPE_01.getKey().equals(orderInvoiceInfo.getFpzlDm())
|| OrderInfoEnum.ORDER_INVOICE_TYPE_02.getKey().equals(orderInvoiceInfo.getFpzlDm())
|| OrderInfoEnum.ORDER_INVOICE_TYPE_52.getKey().equals(orderInvoiceInfo.getFpzlDm()))
&& StringUtils.isNotEmpty(orderInvoiceInfo.getFphm());
if (fpdmhmDp) {
/**
* 获取PDF判断
*/
List<FileDownLoad> fileDownLoadList = orderInvoiceInfoService.getInvoiceFile(orderInfo.getDdlx(), orderInvoiceInfo.getFpzlDm(), orderInvoiceInfo.getPdfUrl(), orderInvoiceInfo.getKplsh(), orderInvoiceInfo.getFpdm(), orderInvoiceInfo.getFphm(), orderInvoiceInfo.getXhfNsrsbh(), terminalCode,"");
if (ObjectUtil.isNotEmpty(fileDownLoadList)) {
orderInvoiceHead.setPDF_FILE(fileDownLoadList.get(0).getFileContent());
} else {
orderInvoiceHead.setPDF_FILE("");
}
} else {
orderInvoiceHead.setPDF_FILE("");
}
// PushReqBO response = new PushReqBO();
// //旧版本组装方式
// List<CommonOrderInvocieBO> commonOrderInvocies = new ArrayList<>();
// CommonOrderInvocieBO commonOrderInvocie = new CommonOrderInvocieBO();
// log.info("==>推送旧的版本接口");
// OrderInvoiceHeadBO orderInvoiceHead = BeanTransitionUtils.transitionOrderInvoiceHead(orderInfo, orderInvoiceInfo);
// boolean fpdmhmDp = (OrderInfoEnum.ORDER_INVOICE_TYPE_51.getKey().equals(orderInvoiceInfo.getFpzlDm())
// || OrderInfoEnum.ORDER_INVOICE_TYPE_01.getKey().equals(orderInvoiceInfo.getFpzlDm())
// || OrderInfoEnum.ORDER_INVOICE_TYPE_02.getKey().equals(orderInvoiceInfo.getFpzlDm())
// || OrderInfoEnum.ORDER_INVOICE_TYPE_52.getKey().equals(orderInvoiceInfo.getFpzlDm()))
// && StringUtils.isNotEmpty(orderInvoiceInfo.getFphm());
// if (fpdmhmDp) {
// /**
// * 获取PDF判断
// */
// List<FileDownLoad> fileDownLoadList = orderInvoiceInfoService.getInvoiceFile(orderInfo.getDdlx(), orderInvoiceInfo.getFpzlDm(), orderInvoiceInfo.getPdfUrl(), orderInvoiceInfo.getKplsh(), orderInvoiceInfo.getFpdm(), orderInvoiceInfo.getFphm(), orderInvoiceInfo.getXhfNsrsbh(), terminalCode,"");
// if (ObjectUtil.isNotEmpty(fileDownLoadList)) {
// orderInvoiceHead.setPDF_FILE(fileDownLoadList.get(0).getFileContent());
// } else {
// orderInvoiceHead.setPDF_FILE("");
// }
// } else {
// orderInvoiceHead.setPDF_FILE("");
// }
//组装
commonOrderInvocie.setORDER_INVOICE_HEAD(orderInvoiceHead);
commonOrderInvocie.setORDER_INVOICE_ITEMS(orderInvoiceItems);
commonOrderInvocies.add(commonOrderInvocie);
//发票开具状态码 0000 成功 9999 失败
response.setSTATUS_CODE(OrderInfoContentEnum.PUSH_ENTERPRISE_SUCCESS.getKey());
response.setSTATUS_MESSAGE(OrderInfoContentEnum.PUSH_ENTERPRISE_SUCCESS.getMessage());
response.setCOMMON_ORDER_INVOCIE(commonOrderInvocies);
content = JsonUtils.getInstance().toJsonString(response);
// commonOrderInvocie.setORDER_INVOICE_HEAD(orderInvoiceHead);
// commonOrderInvocie.setORDER_INVOICE_ITEMS(orderInvoiceItems);
// commonOrderInvocies.add(commonOrderInvocie);
//
// //发票开具状态码 0000 成功 9999 失败
// response.setSTATUS_CODE(OrderInfoContentEnum.PUSH_ENTERPRISE_SUCCESS.getKey());
// response.setSTATUS_MESSAGE(OrderInfoContentEnum.PUSH_ENTERPRISE_SUCCESS.getMessage());
// response.setCOMMON_ORDER_INVOCIE(commonOrderInvocies);
// content = JsonUtils.getInstance().toJsonString(response);
}
return content;
}
@ -1878,7 +1931,6 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
|| OrderInfoEnum.ORDER_INVOICE_TYPE_52.getValue().equals(orderInvoiceInfo.getFpzlDm())
|| OrderInfoEnum.ORDER_INVOICE_TYPE_01.getValue().equals(orderInvoiceInfo.getFpzlDm())
|| OrderInfoEnum.ORDER_INVOICE_TYPE_02.getValue().equals(orderInvoiceInfo.getFpzlDm())
){
OrderInfo orderInfo = orderInfoService.selectOrderInfoByOrderId(orderProcessInfo.getOrderInfoId(), shList);
List<FileDownLoad> fileDownLoadList = orderInvoiceInfoService.getInvoiceFile(orderInfo.getDdlx(), orderInvoiceInfo.getFpzlDm(), orderInvoiceInfo.getPdfUrl(), orderInvoiceInfo.getKplsh(), orderInvoiceInfo.getFpdm(), orderInvoiceInfo.getFphm(), orderInvoiceInfo.getXhfNsrsbh(), terminalCode,"");
@ -1928,6 +1980,18 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
zffptsV5.setFPHM(invalidInvoiceInfo.getFphm());
zffptsV5.setZFLX(invalidInvoiceInfo.getZflx());
zffptsV5.setZFYY(invalidInvoiceInfo.getZfyy());
if(OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(zfTsMqData.getXtly())){
try {
InterfaceRequestData interfaceRequestData = interfaceRequestDataMapper.selectByBatchId(zfTsMqData.getBzdh(), "GenerateQdInvoice");
String requestData = interfaceRequestData.getRequestData();
PoCommonRequestParam poCommonRequestParam = JsonUtils.getInstance().parseObject(requestData, PoCommonRequestParam.class);
String zdata = poCommonRequestParam.getIS_INPUT().getZDATA();
FpkjReqSap req = JsonUtils.getInstance().parseObject(zdata, FpkjReqSap.class);
zffptsV5.setDDH(StringUtils.isBlank(req.getZJSDH())?"":req.getZJSDH());
} catch (Exception e) {
log.error("商旅匹配结算单号{}",e.getMessage());
}
}
if (OrderInfoEnum.INVALID_INVOICE_1.getKey().equals(invalidInvoiceInfo.getZfBz())) {
zffptsV5.setZTDM(InterfaceEnum.INTERFACE_V5_REQ_CHECK_STATUS_050000.getKey());
zffptsV5.setZTXX(InterfaceEnum.INTERFACE_V5_REQ_CHECK_STATUS_050000.getMessage());

@ -165,12 +165,15 @@ public class OrderInfoController {
@PostMapping("/updateBillNumber")
@ApiOperation(value = "发票列表", notes = "发票列表修改报账单号")
@SysLog(operation = "发票列表", operationDesc = "发票列表修改报账单号", key = "订单发票管理")
public R updateBillNumber(@RequestParam("bzdh") String bzdh, @RequestParam("orderInfoId") String orderInfoId) {
public R updateBillNumber(@RequestParam("bzdh") String bzdh,
@RequestParam("orderInfoId") String orderInfoId,
@RequestParam("fpqqlsh")String fpqqlsh,
@RequestParam("xhfNsrsbh")String xhfNsrsbh) {
if(StringUtils.isBlank(bzdh)||StringUtils.isBlank(orderInfoId)){
return R.error("请求参数有误");
}
try {
int i = orderInfoService.updateBillNumber(bzdh, orderInfoId);
int i = orderInfoService.updateBillNumber(bzdh, orderInfoId,fpqqlsh,xhfNsrsbh);
if(i > 0){
return R.ok();
}
@ -459,7 +462,7 @@ public class OrderInfoController {
try {
return orderInfoService.ratioConversion(Arrays.asList(orderInfoIds.split(",")), rate, xhfNsrsbh, originUnit, newUnit);
} catch (Exception e) {
return R.error("系统异常,请联系管理员");
return R.error(ResponseStatusEnum.INTERNAL_SERVER_ERROR.getValue());
}
}
@ -479,8 +482,8 @@ public class OrderInfoController {
try {
return orderInfoService.updateOrderItem(orderInfoId,entId,itemList);
} catch (Exception e) {
log.error(e.getMessage());
return R.error("系统异常");
log.error("订单更新物料异常{}",e);
return R.error(ResponseStatusEnum.INTERNAL_SERVER_ERROR.getValue());
}
}
@ -494,8 +497,8 @@ public class OrderInfoController {
try {
return orderInfoService.sycnCommodity(param);
} catch (Exception e) {
log.error("同步公司物料库失败,失败原因:{}",e.getMessage());
return R.error("系统异常,请联系管理员");
log.error("同步公司物料库失败,失败原因:{}",e);
return R.error(ResponseStatusEnum.INTERNAL_SERVER_ERROR.getValue());
}
}
@ -515,8 +518,8 @@ public class OrderInfoController {
try {
return orderInfoService.mergeOrderItem(entId,orderInfoId,itemList);
} catch (Exception e) {
log.error(e.getMessage());
return R.error("系统异常");
log.error("单笔订单明细合并{}",e);
return R.error(ResponseStatusEnum.INTERNAL_SERVER_ERROR.getValue());
}
}
@ -530,9 +533,26 @@ public class OrderInfoController {
try {
return orderInfoService.batchMegerOrderItem(jsonObjects);
} catch (Exception e) {
log.error(e.getMessage());
return R.error("系统异常");
log.error("批量订单明细合并异常,{}",e);
return R.error(ResponseStatusEnum.INTERNAL_SERVER_ERROR.getValue());
}
}
@ApiOperation(value = "发票开具、作废、冲红", notes = "发票开具、作废、冲红前检查通报账单其他订单")
@PostMapping("/checkInvoiceSync")
@SysLog(operation = "发票开具、作废、冲红", operationDesc = "发票开具、作废、冲红前检查通报账单其他订单", key = "发票开具、作废、冲红")
public R checkInvoiceSync(@RequestParam String operation,@RequestParam String nsrsbh,@RequestParam String param){
log.info("山能商旅校验是否存在同报账单订单请求参数{}",operation);
if(StringUtils.isBlank(operation)||StringUtils.isBlank(param)){
return R.error("请求参数有误");
}
try {
return orderInfoService.checkInvoiceSync(operation,nsrsbh,param);
} catch (Exception e) {
log.error("山能商旅校验是否存在同报账单订单异常{}",e);
return R.error(ResponseStatusEnum.INTERNAL_SERVER_ERROR.getValue());
}
}
}

@ -315,6 +315,9 @@ public class ReceiveOrderController {
excel.setGhfDh(excel.getXhfDh());
excel.setGhfQylx(OrderInfoEnum.GHF_QYLX_04.getValue());
}
if(StringUtils.equals(OrderInfoEnum.TSPZ_2.getValue(), excel.getTspz())){
excel.setXmdw(ConfigureConstant.STRING_LINAG);
}
/**
* 处理税率开具理由将内容转为code
* 参考{@link OrderInfoEnum#ORDER_SLKJLY_0}{@link OrderInfoEnum#ORDER_SLKJLY_2}{@link OrderInfoEnum#ORDER_SLKJLY_3}
@ -330,6 +333,9 @@ public class ReceiveOrderController {
excel.setSlkjly("");
}
}
if(StringUtils.isNotBlank(excel.getZxbm())){
excel.setZxbm(String.format("%18s", excel.getZxbm()).replace(' ', '0'));
}
}
if (newOrderExcels.size() <= 0) {
return R.error().put(OrderManagementConstant.CODE, OrderInfoContentEnum.RECEIVE_FAILD.getKey())

@ -222,7 +222,7 @@ public interface OrderInfoService {
R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit);
int updateBillNumber(String bzdh,String orderInfoId);
int updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh);
@Transactional
R logicalDeleteByOrderInfoId(List<PageRequestVO> pageRequestList);
@ -246,4 +246,6 @@ public interface OrderInfoService {
* @return
*/
Boolean checkInvoiceRemarksFlag(String entId,String ghfId);
R checkInvoiceSync(String operation,String nsrsbh,String param);
}

@ -32,6 +32,8 @@ public interface OrderProcessService {
*/
OrderProcessInfo queryOrderProcessInfoByFpqqlsh(String fpqqlsh, List<String> shList);
List<OrderProcessInfo> queryOrderProcessInfoByBzdh(String bzdh, List<String> shList);
/**
* 根据订单请求批次号获取发票处理表数据
*

@ -134,6 +134,7 @@ public class GenerateReadyOpenOrderServiceImpl implements GenerateReadyOpenOrder
@Override
public R reshRed(CommonOrderInfo commonOrderInfo, String uId) throws OrderSeparationException {
log.info("{} 红字发票单张冲红!", LOGGER_MSG);
OrderProcessInfo processInfo = commonOrderInfo.getProcessInfo();
if (commonOrderInfo == null) {
return R.setCodeAndMsg(OrderInfoContentEnum.READY_ORDER_CHECK_DATA_ERROR, null);
}
@ -201,6 +202,7 @@ public class GenerateReadyOpenOrderServiceImpl implements GenerateReadyOpenOrder
orderProcessInfo.setDdlx(OrderInfoEnum.ORDER_TYPE_3.getKey());
orderProcessInfo.setDdzt(OrderInfoEnum.ORDER_STATUS_0.getKey());
orderProcessInfo.setYzfp(ConfigureConstant.STRING_1);
orderProcessInfo.setXtly(processInfo==null?"":processInfo.getXtly());
commonOrderInfo.setProcessInfo(orderProcessInfo);
commonOrderInfo.getOrderInfo().setCreateTime(new Date());
commonOrderInfo.getOrderInfo().setUpdateTime(new Date());
@ -648,7 +650,11 @@ public class GenerateReadyOpenOrderServiceImpl implements GenerateReadyOpenOrder
orderProcessInfo.setDdly(commonOrderInfo.getProcessInfo().getDdly());
orderProcessInfo.setDdzt(commonOrderInfo.getProcessInfo().getDdzt());
orderProcessInfo.setBzdh(StrUtil.isBlank(commonOrderInfo.getProcessInfo().getBzdh())?commonOrderInfo.getOrderInfo().getBzdh():commonOrderInfo.getProcessInfo().getBzdh());
orderProcessInfo.setXtly("FPPTEXCEL");
if(StringUtils.isNotBlank(commonOrderInfo.getProcessInfo().getXtly())){
orderProcessInfo.setXtly(commonOrderInfo.getProcessInfo().getXtly());
}else{
orderProcessInfo.setXtly(OrderInfoEnum.SYS_SOURCE_EXCEL.getKey());
}
orderProcessInfo.setBhzt(ConfigureConstant.STRING_0);
orderProcessInfo.setYzfp(commonOrderInfo.getProcessInfo().getYzfp());
orderProcessInfo.setKb(orderItemInfos.get(0).getKb());

@ -337,85 +337,85 @@ public class OrderExcelReadServiceImpl implements OrderExcelReadService {
}
// 商品名称 70位 必填 ==>改成90 (19-03-28)
if (StringUtils.isBlank(orderExcel.getXmmc())) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMMC.getCellName(), ExcelErrorMessageEnum.ORDERINFO_XMMC_NULL, true));
}
if(CommonUtils.judgeIsQdfp("", orderExcel.getFpzlDm())){
if (!StringUtils.isBlank(orderExcel.getXmmc()) && GbkUtils.getGbkLength(orderExcel.getXmmc()) > ConfigureConstant.INT_600) {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMMC.getCellName(), ExcelErrorMessageEnum.QD_ORDERINFO_SPMC_OVERLENGTH, false));
}
} else {
if (!StringUtils.isBlank(orderExcel.getXmmc()) && GbkUtils.getGbkLength(orderExcel.getXmmc()) > ConfigureConstant.INT_90) {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMMC.getCellName(), ExcelErrorMessageEnum.ORDERINFO_SPMC_OVERLENGTH, false));
}
}
// if (StringUtils.isBlank(orderExcel.getXmmc())) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMMC.getCellName(), ExcelErrorMessageEnum.ORDERINFO_XMMC_NULL, true));
// }
// if(CommonUtils.judgeIsQdfp("", orderExcel.getFpzlDm())){
// if (!StringUtils.isBlank(orderExcel.getXmmc()) && GbkUtils.getGbkLength(orderExcel.getXmmc()) > ConfigureConstant.INT_600) {
// isValid = true;
// resultList.add(
// buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMMC.getCellName(), ExcelErrorMessageEnum.QD_ORDERINFO_SPMC_OVERLENGTH, false));
// }
// } else {
// if (!StringUtils.isBlank(orderExcel.getXmmc()) && GbkUtils.getGbkLength(orderExcel.getXmmc()) > ConfigureConstant.INT_90) {
// isValid = true;
// resultList.add(
// buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMMC.getCellName(), ExcelErrorMessageEnum.ORDERINFO_SPMC_OVERLENGTH, false));
// }
// }
// 规格型号 40位
if(CommonUtils.judgeIsQdfp("", orderExcel.getFpzlDm())){
if (!StringUtils.isBlank(orderExcel.getGgxh()) && GbkUtils.getGbkLength(orderExcel.getGgxh()) > ConfigureConstant.INT_150) {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_GGXH.getCellName(), ExcelErrorMessageEnum.QD_ORDERINFO_GGXH_OVERLENGTH, false));
}
} else {
if (!StringUtils.isBlank(orderExcel.getGgxh()) && GbkUtils.getGbkLength(orderExcel.getGgxh()) > ConfigureConstant.INT_40) {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_GGXH.getCellName(), ExcelErrorMessageEnum.ORDERINFO_GGXH_OVERLENGTH, false));
}
}
// if(CommonUtils.judgeIsQdfp("", orderExcel.getFpzlDm())){
// if (!StringUtils.isBlank(orderExcel.getGgxh()) && GbkUtils.getGbkLength(orderExcel.getGgxh()) > ConfigureConstant.INT_150) {
// isValid = true;
// resultList.add(
// buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_GGXH.getCellName(), ExcelErrorMessageEnum.QD_ORDERINFO_GGXH_OVERLENGTH, false));
// }
// } else {
// if (!StringUtils.isBlank(orderExcel.getGgxh()) && GbkUtils.getGbkLength(orderExcel.getGgxh()) > ConfigureConstant.INT_40) {
// isValid = true;
// resultList.add(
// buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_GGXH.getCellName(), ExcelErrorMessageEnum.ORDERINFO_GGXH_OVERLENGTH, false));
// }
// }
//根据金额判断是否为折扣行,金额小于0为折扣行
String fphxz = StringUtils.isNotBlank(orderExcel.getXmje()) && Double.parseDouble(orderExcel.getXmje()) < 0 ? OrderInfoEnum.FPHXZ_CODE_1.getKey() : OrderInfoEnum.FPHXZ_CODE_0.getKey();
//如果机动车类型为 `经销企业`,则规格型号不能为空且不允许重复
if (OrderInfoEnum.TSPZ_2.getValue().equals(orderExcel.getTspz()) && OrderInfoEnum.JDCQYLX_02.getValue().equals(orderExcel.getJdcqylx()) &&
(OrderInfoEnum.FPHXZ_CODE_0.getKey().equals(fphxz) || OrderInfoEnum.FPHXZ_CODE_2.getKey().equals(fphxz))) {
if (StringUtils.isBlank(orderExcel.getGgxh()) || (ggxhSet.size() != itemCount)) {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_GGXH.getCellName(), ExcelErrorMessageEnum.ORDERINFO_GGXH_ERROR, false));
}
}
// if (OrderInfoEnum.TSPZ_2.getValue().equals(orderExcel.getTspz()) && OrderInfoEnum.JDCQYLX_02.getValue().equals(orderExcel.getJdcqylx()) &&
// (OrderInfoEnum.FPHXZ_CODE_0.getKey().equals(fphxz) || OrderInfoEnum.FPHXZ_CODE_2.getKey().equals(fphxz))) {
// if (StringUtils.isBlank(orderExcel.getGgxh()) || (ggxhSet.size() != itemCount)) {
// isValid = true;
// resultList.add(
// buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_GGXH.getCellName(), ExcelErrorMessageEnum.ORDERINFO_GGXH_ERROR, false));
// }
// }
//全电发票 单位、单价、数量关系校验
//全电发票,单位、单价、数量同时为空或同时不为空
if(CommonUtils.judgeIsQdfp("", orderExcel.getFpzlDm())){
boolean isEmpty = StringUtils.isBlank(orderExcel.getXmdw())
&& StringUtils.isBlank(orderExcel.getXmsl())
&& StringUtils.isBlank(orderExcel.getXmdj());
boolean isNotEmpty = StringUtils.isNotBlank(orderExcel.getXmdw())
&& StringUtils.isNotBlank(orderExcel.getXmsl())
&& StringUtils.isNotBlank(orderExcel.getXmdj());
if(!(isEmpty || isNotEmpty)){
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(),
ExcelErrorMessageEnum.QD_ORDERINFO_XMDW_XMSL_XMDJ_OVERLENGTH, false));
}
}
// if(CommonUtils.judgeIsQdfp("", orderExcel.getFpzlDm())){
// boolean isEmpty = StringUtils.isBlank(orderExcel.getXmdw())
// && StringUtils.isBlank(orderExcel.getXmsl())
// && StringUtils.isBlank(orderExcel.getXmdj());
//
// boolean isNotEmpty = StringUtils.isNotBlank(orderExcel.getXmdw())
// && StringUtils.isNotBlank(orderExcel.getXmsl())
// && StringUtils.isNotBlank(orderExcel.getXmdj());
//
// if(!(isEmpty || isNotEmpty)){
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(),
// ExcelErrorMessageEnum.QD_ORDERINFO_XMDW_XMSL_XMDJ_OVERLENGTH, false));
// }
// }
// 单位 20位
if(CommonUtils.judgeIsQdfp("", orderExcel.getFpzlDm())){
if (!StringUtils.isBlank(orderExcel.getXmdw()) && GbkUtils.getGbkLength(orderExcel.getXmdw()) > ConfigureConstant.INT_300) {
isValid = true;
resultList
.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.QD_ORDERINFO_DW_OVERLENGTH, false));
}
} else {
if (!StringUtils.isBlank(orderExcel.getXmdw()) && GbkUtils.getGbkLength(orderExcel.getXmdw()) > ConfigureConstant.INT_20) {
isValid = true;
resultList
.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.ORDERINFO_DW_OVERLENGTH, false));
}
}
// if(CommonUtils.judgeIsQdfp("", orderExcel.getFpzlDm())){
// if (!StringUtils.isBlank(orderExcel.getXmdw()) && GbkUtils.getGbkLength(orderExcel.getXmdw()) > ConfigureConstant.INT_300) {
// isValid = true;
// resultList
// .add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.QD_ORDERINFO_DW_OVERLENGTH, false));
// }
// } else {
// if (!StringUtils.isBlank(orderExcel.getXmdw()) && GbkUtils.getGbkLength(orderExcel.getXmdw()) > ConfigureConstant.INT_20) {
// isValid = true;
// resultList
// .add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.ORDERINFO_DW_OVERLENGTH, false));
// }
// }
//如果特殊票种为 `机动车发票` 则单位必须为 `辆`
if (StringUtils.equals(OrderInfoEnum.TSPZ_2.getValue(), orderExcel.getTspz()) &&
!StringUtils.equals(ConfigureConstant.STRING_LINAG, orderExcel.getXmdw()) &&
@ -424,29 +424,29 @@ public class OrderExcelReadServiceImpl implements OrderExcelReadService {
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.ORDERINFO_XMDW_JDCZP, false));
}
String spbm = orderExcel.getSsflbm();
if (StringUtils.isNotEmpty(spbm)) {
spbm = StringUtil.fillZero(spbm, ConfigureConstant.INT_19);
}
TaxClassCodeEntity taxClassCodeEntity = taxClassCodeService.queryTaxClassCodeFromCache(spbm);
if (ObjectUtil.isNotEmpty(taxClassCodeEntity)) {
if (ConfigureConstant.STRING_Y.equals(taxClassCodeEntity.getCpy())) {
orderExcel.setTspz(OrderInfoEnum.TSPZ_1.getValue());
//成品油单位只能为升或吨
if (Double.parseDouble(orderExcel.getXmje()) > 0 && !ConfigureConstant.STRING_SHENG.equals(orderExcel.getXmdw()) && !ConfigureConstant.STRING_DUN.equals(orderExcel.getXmdw())) {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9714, false));
}
}
} else {
if (StringUtils.isBlank(orderExcel.getSl())) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_SSFLBM_SL_NULL, false));
}
}
// String spbm = orderExcel.getSsflbm();
// if (StringUtils.isNotEmpty(spbm)) {
// spbm = StringUtil.fillZero(spbm, ConfigureConstant.INT_19);
// }
// TaxClassCodeEntity taxClassCodeEntity = taxClassCodeService.queryTaxClassCodeFromCache(spbm);
// if (ObjectUtil.isNotEmpty(taxClassCodeEntity)) {
// if (ConfigureConstant.STRING_Y.equals(taxClassCodeEntity.getCpy())) {
// orderExcel.setTspz(OrderInfoEnum.TSPZ_1.getValue());
// //成品油单位只能为升或吨
// if (Double.parseDouble(orderExcel.getXmje()) > 0 && !ConfigureConstant.STRING_SHENG.equals(orderExcel.getXmdw()) && !ConfigureConstant.STRING_DUN.equals(orderExcel.getXmdw())) {
// isValid = true;
// resultList.add(
// buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9714, false));
// }
// }
// } else {
// if (StringUtils.isBlank(orderExcel.getSl())) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_SSFLBM_SL_NULL, false));
//
// }
// }
//扣除额不为空时,长度不能超过20
if (StringUtils.isNotBlank(orderExcel.getKce()) && GbkUtils.getGbkLength(orderExcel.getKce()) > ConfigureConstant.INT_20) {
@ -499,12 +499,13 @@ public class OrderExcelReadServiceImpl implements OrderExcelReadService {
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMSL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_XMSL_OVERLENGTH, false));
}
} else if (StringUtils.isNotEmpty(orderExcel.getXmje()) && Double.parseDouble(orderExcel.getXmje()) > 0 && ObjectUtil.isNotEmpty(taxClassCodeEntity) && ConfigureConstant.STRING_Y.equals(taxClassCodeEntity.getCpy())) {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMSL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9716, false));
}
// else if (StringUtils.isNotEmpty(orderExcel.getXmje()) && Double.parseDouble(orderExcel.getXmje()) > 0 && ObjectUtil.isNotEmpty(taxClassCodeEntity) && ConfigureConstant.STRING_Y.equals(taxClassCodeEntity.getCpy())) {
// isValid = true;
// resultList.add(
// buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMSL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9716, false));
//
// }
//根据机动车企业类型判断,当企业类型为 `生产企业`,规格型号为空时,数量可以是大于0的整数,规格型号不为空时,数量必须是1
//当企业类型为`经销企业`时,数量必须为1
@ -654,10 +655,10 @@ public class OrderExcelReadServiceImpl implements OrderExcelReadService {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), ConfigureConstant.STRING_EXCEL_ZKH, ExcelErrorMessageEnum.ORDERINFO_ZKH_ERROR, true));
} else if (StringUtils.isNotBlank(orderExcel.getXmmc()) && !orderExcel.getXmmc().equals(lastOrderExcel.getXmmc())) {
isValid = true;
resultList.add(
buildReturnMap(orderExcel.getRowIndex(), ConfigureConstant.STRING_EXCEL_ZKH, ExcelErrorMessageEnum.ORDERINFO_ZKH_ERROR, true));
// } else if (StringUtils.isNotBlank(orderExcel.getXmmc()) && !orderExcel.getXmmc().equals(lastOrderExcel.getXmmc())) {
// isValid = true;
// resultList.add(
// buildReturnMap(orderExcel.getRowIndex(), ConfigureConstant.STRING_EXCEL_ZKH, ExcelErrorMessageEnum.ORDERINFO_ZKH_ERROR, true));
} else if (lastOrderExcel.getXmje() != null && Double.parseDouble(lastOrderExcel.getXmje()) <= ConfigureConstant.DOUBLE_PENNY_ZERO) {
isValid = true;
resultList.add(
@ -673,41 +674,38 @@ public class OrderExcelReadServiceImpl implements OrderExcelReadService {
resultList.add(buildReturnMap(orderExcel.getRowIndex(), ConfigureConstant.STRING_EXCEL_ZKH, ExcelErrorMessageEnum.ORDERINFO_ZKH_SL_ERROR, true));
}
if (StringUtils.isNotBlank(orderExcel.getXmdw())) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.ORDERINFO_ZKH_XMDW_ERROR, true));
}
if (StringUtils.isNotBlank(orderExcel.getGgxh())) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_GGXH.getCellName(), ExcelErrorMessageEnum.ORDERINFO_ZKH_GGXH_ERROR, true));
}
}
}
if (StringUtils.isNotBlank(orderExcel.getXmmc()) && StringUtils.isEmpty(orderExcel.getSsflbm())) {
/**
* 校验商品重复
*/
CommodityCodeCheckQuery commodityCodeCheckQuery = new CommodityCodeCheckQuery();
commodityCodeCheckQuery.setXmmc(orderExcel.getXmmc());
commodityCodeCheckQuery.setZxbm(orderExcel.getZxbm());
commodityCodeCheckQuery.setGgxh(orderExcel.getGgxh());
commodityCodeCheckQuery.setXmdw(orderExcel.getXmdw());
commodityCodeCheckQuery.setXmdj(orderExcel.getXmdj());
commodityCodeCheckQuery.setSl(orderExcel.getSl());
commodityCodeCheckQuery.setDeptId(entId);
R r = commodityService.checkRepeat(commodityCodeCheckQuery, shList, false);
if (OrderInfoContentEnum.COMMODITY_MESSAGE_ERROR_174015.getKey().equals(r.get(OrderManagementConstant.CODE))) {
log.error("根据商品名称查到多个商品!");
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SPBM.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_XMMC_ERROR, false));
}
}
// if (StringUtils.isNotBlank(orderExcel.getXmdw())) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_XMDW.getCellName(), ExcelErrorMessageEnum.ORDERINFO_ZKH_XMDW_ERROR, true));
// }
// if (StringUtils.isNotBlank(orderExcel.getGgxh())) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_GGXH.getCellName(), ExcelErrorMessageEnum.ORDERINFO_ZKH_GGXH_ERROR, true));
// }
}
}
// if (StringUtils.isNotBlank(orderExcel.getXmmc()) && StringUtils.isEmpty(orderExcel.getSsflbm())) {
// /**
// * 校验商品重复
// */
// CommodityCodeCheckQuery commodityCodeCheckQuery = new CommodityCodeCheckQuery();
// commodityCodeCheckQuery.setXmmc(orderExcel.getXmmc());
// commodityCodeCheckQuery.setZxbm(orderExcel.getZxbm());
// commodityCodeCheckQuery.setGgxh(orderExcel.getGgxh());
// commodityCodeCheckQuery.setXmdw(orderExcel.getXmdw());
// commodityCodeCheckQuery.setXmdj(orderExcel.getXmdj());
// commodityCodeCheckQuery.setSl(orderExcel.getSl());
// commodityCodeCheckQuery.setDeptId(entId);
// R r = commodityService.checkRepeat(commodityCodeCheckQuery, shList, false);
// if (OrderInfoContentEnum.COMMODITY_MESSAGE_ERROR_174015.getKey().equals(r.get(OrderManagementConstant.CODE))) {
// log.error("根据商品名称查到多个商品!");
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SPBM.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_XMMC_ERROR, false));
// }
// }
//税额 非必填 必须为数字,最多20位 0.06误差
if (!StringUtils.isBlank(orderExcel.getSe())) {
@ -787,70 +785,70 @@ public class OrderExcelReadServiceImpl implements OrderExcelReadService {
//是否享受税收优惠政策
//优惠政策标识只能为0或者1 必填
String yhzcbs = orderExcel.getYhzcbs();
if ((ConfigureConstant.STRING_YHZCBS_F.equals(yhzcbs))) {
orderExcel.setYhzcbs(OrderInfoEnum.YHZCBS_0.getKey());
yhzcbs = OrderInfoEnum.YHZCBS_0.getKey();
} else if (ConfigureConstant.STRING_YHZCBS_S.equals(yhzcbs)) {
orderExcel.setYhzcbs(OrderInfoEnum.YHZCBS_1.getKey());
yhzcbs = OrderInfoEnum.YHZCBS_1.getKey();
} else {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_YHZCBS.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_9707, false));
}
// String yhzcbs = orderExcel.getYhzcbs();
// if ((ConfigureConstant.STRING_YHZCBS_F.equals(yhzcbs))) {
// orderExcel.setYhzcbs(OrderInfoEnum.YHZCBS_0.getKey());
// yhzcbs = OrderInfoEnum.YHZCBS_0.getKey();
// } else if (ConfigureConstant.STRING_YHZCBS_S.equals(yhzcbs)) {
// orderExcel.setYhzcbs(OrderInfoEnum.YHZCBS_1.getKey());
// yhzcbs = OrderInfoEnum.YHZCBS_1.getKey();
// } else {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_YHZCBS.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_9707, false));
// }
//享受税收优惠政策内容
//享受税收优惠政策内容只能是 `免税`,`不征税`,`出口零税`
String zzstsgl = orderExcel.getZzstsgl();
if (StringUtils.isNotBlank(zzstsgl)) {
if (ConfigureConstant.STRING_CKLS.equals(zzstsgl)) {
orderExcel.setLslbs(OrderInfoEnum.LSLBS_0.getKey());
} else if (ConfigureConstant.STRING_MS.equals(zzstsgl)) {
orderExcel.setLslbs(OrderInfoEnum.LSLBS_1.getKey());
} else if (ConfigureConstant.STRING_BZS.equals(zzstsgl)) {
orderExcel.setLslbs(OrderInfoEnum.LSLBS_2.getKey());
} else {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZZSTSGL.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_9901, false));
}
}
// String zzstsgl = orderExcel.getZzstsgl();
// if (StringUtils.isNotBlank(zzstsgl)) {
// if (ConfigureConstant.STRING_CKLS.equals(zzstsgl)) {
// orderExcel.setLslbs(OrderInfoEnum.LSLBS_0.getKey());
// } else if (ConfigureConstant.STRING_MS.equals(zzstsgl)) {
// orderExcel.setLslbs(OrderInfoEnum.LSLBS_1.getKey());
// } else if (ConfigureConstant.STRING_BZS.equals(zzstsgl)) {
// orderExcel.setLslbs(OrderInfoEnum.LSLBS_2.getKey());
// } else {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZZSTSGL.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_9901, false));
// }
// }
//优惠政策标识为1时;
if (OrderInfoEnum.YHZCBS_1.getKey().equals(yhzcbs)) {
if (StringUtils.isBlank(zzstsgl)) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZZSTSGL.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_9708, false));
}
//订单明细信息中YHZCBS(优惠政策标识)为1, 且税率为0, 则ZZSTSGL内容只能写"出口零税/免税/不征税
if (!StringUtils.isBlank(orderExcel.getSl()) &&
ConfigureConstant.STRING_000.equals(orderExcel.getSl()) && (StringUtils.isBlank(zzstsgl))) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZZSTSGL.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_9706, false));
}
}
// if (OrderInfoEnum.YHZCBS_1.getKey().equals(yhzcbs)) {
// if (StringUtils.isBlank(zzstsgl)) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZZSTSGL.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_9708, false));
// }
// //订单明细信息中YHZCBS(优惠政策标识)为1, 且税率为0, 则ZZSTSGL内容只能写"出口零税/免税/不征税
// if (!StringUtils.isBlank(orderExcel.getSl()) &&
// ConfigureConstant.STRING_000.equals(orderExcel.getSl()) && (StringUtils.isBlank(zzstsgl))) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZZSTSGL.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_9706, false));
// }
// }
//订单明细信息中优惠政策标识为0时,增值税特殊管理须为空
if (OrderInfoEnum.YHZCBS_0.getKey().equals(yhzcbs)) {
if (StringUtils.isNotBlank(zzstsgl)) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZZSTSGL.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_9708, false));
} else {
//如果税率为0,但并不属于优惠政策(即普通的零税率),则YHZCBS填0,ZZSTSGL为空,LSLBS填3,;
if(ConfigureConstant.STRING_000.equals(orderExcel.getSl())){
orderExcel.setLslbs(OrderInfoEnum.LSLBS_3.getKey());
}
}
}
// if (OrderInfoEnum.YHZCBS_0.getKey().equals(yhzcbs)) {
// if (StringUtils.isNotBlank(zzstsgl)) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZZSTSGL.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_9708, false));
// } else {
// //如果税率为0,但并不属于优惠政策(即普通的零税率),则YHZCBS填0,ZZSTSGL为空,LSLBS填3,;
// if(ConfigureConstant.STRING_000.equals(orderExcel.getSl())){
// orderExcel.setLslbs(OrderInfoEnum.LSLBS_3.getKey());
// }
// }
// }
/**
* 税率非空时,逻辑判断
*/
if (!StringUtils.isBlank(orderExcel.getSl())) {
// if (!StringUtils.isBlank(orderExcel.getSl())) {
/**
* 增值税特殊管理不为空,不为不征税,不为免税,不为出口零税逻辑处理
* 如果是按5%简易征收需要保证税率为0.05
@ -858,59 +856,63 @@ public class OrderExcelReadServiceImpl implements OrderExcelReadService {
* 如果是简易征收需要保证税率为0.03或0.04或0.05
* 如果是按5%简易征收减按1.5%计征需要保证税率为0.015
*/
if ((!StringUtils.isBlank(zzstsgl)) &&
(!ConfigureConstant.STRING_BZS.equals(zzstsgl)) &&
(!ConfigureConstant.STRING_MS.equals(zzstsgl)) &&
(!ConfigureConstant.STRING_CKLS.equals(zzstsgl))) {
if (zzstsgl.contains(ConfigureConstant.STRING_ERROR_PERCENT)) {
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9720, false));
}
switch (zzstsgl) {
case ConfigureConstant.STRING_JYZS5:
if (new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_5) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9711, false));
}
break;
case ConfigureConstant.STRING_JYZS3:
if (new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_3) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9711, false));
}
break;
case ConfigureConstant.STRING_JYZS:
if (new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_3 && new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_4 && new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_5) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9711, false));
}
break;
case ConfigureConstant.STRING_JYZS5_1:
if (DecimalCalculateUtil.stringCompare(orderExcel.getSl(), ConfigureConstant.STRING_0015) != 0) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9711, false));
}
break;
default:
break;
}
}
// if ((!StringUtils.isBlank(zzstsgl)) &&
// (!ConfigureConstant.STRING_BZS.equals(zzstsgl)) &&
// (!ConfigureConstant.STRING_MS.equals(zzstsgl)) &&
// (!ConfigureConstant.STRING_CKLS.equals(zzstsgl))) {
//
// if (zzstsgl.contains(ConfigureConstant.STRING_ERROR_PERCENT)) {
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9720, false));
// }
// switch (zzstsgl) {
// case ConfigureConstant.STRING_JYZS5:
// if (new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_5) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9711, false));
// }
// break;
// case ConfigureConstant.STRING_JYZS3:
// if (new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_3) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9711, false));
// }
// break;
// case ConfigureConstant.STRING_JYZS:
// if (new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_3 && new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_4 && new BigDecimal(orderExcel.getSl()).doubleValue() != ConfigureConstant.DOUBLE_PENNY_5) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9711, false));
// }
// break;
// case ConfigureConstant.STRING_JYZS5_1:
// if (DecimalCalculateUtil.stringCompare(orderExcel.getSl(), ConfigureConstant.STRING_0015) != 0) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9711, false));
// }
// break;
// default:
// break;
// }
// }
//零税率标识不为空,税率必须为0
if ((!StringUtils.isBlank(orderExcel.getLslbs())) && (ConfigureConstant.DOUBLE_PENNY_ZERO != new BigDecimal(orderExcel.getSl()).doubleValue())) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_9709, false));
}
//零税率标识为空,税率不能为0
if ((StringUtils.isBlank(orderExcel.getLslbs())) && (ConfigureConstant.DOUBLE_PENNY_ZERO == new BigDecimal(orderExcel.getSl()).doubleValue())) {
isValid = true;
resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(),
ExcelErrorMessageEnum.ORDERINFO_9709, false));
}
// if ((!StringUtils.isBlank(orderExcel.getLslbs())) && (ConfigureConstant.DOUBLE_PENNY_ZERO != new BigDecimal(orderExcel.getSl()).doubleValue())) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_9709, false));
// }
//
// //零税率标识为空,税率不能为0
// if ((StringUtils.isBlank(orderExcel.getLslbs())) && (ConfigureConstant.DOUBLE_PENNY_ZERO == new BigDecimal(orderExcel.getSl()).doubleValue())) {
// isValid = true;
// resultList.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_SL.getCellName(),
// ExcelErrorMessageEnum.ORDERINFO_9709, false));
// }
// }
if (StringUtils.isBlank(orderExcel.getZxbm())) {
isValid = true;
resultList
.add(buildReturnMap(orderExcel.getRowIndex(), NewExcelEnum.ORDERITEM_ZXBM.getCellName(), ExcelErrorMessageEnum.ORDERINFO_9700, false));
}
// 自行编码
if (!StringUtils.isBlank(orderExcel.getZxbm()) && GbkUtils.getGbkLength(orderExcel.getZxbm()) > ConfigureConstant.INT_18) {
isValid = true;
@ -1649,8 +1651,7 @@ public class OrderExcelReadServiceImpl implements OrderExcelReadService {
errorList.add(examinData);
}
} else {
Map<String, Object> examinData = examinData(newOrderExcel, lastOrderExcel, xhfNsrsbh,
ggxhSet, (i + 1), userId, terminalCode,entId);
Map<String, Object> examinData = examinData(newOrderExcel, lastOrderExcel, xhfNsrsbh,ggxhSet, (i + 1), userId, terminalCode,entId);
List<Object> resultList = (List<Object>) examinData.get("resultList");
//验证扣除额是否合法
if (ObjectUtil.isNotNull(newOrderExcel) && StringUtils.isNotBlank(newOrderExcel.getKce())) {

@ -31,6 +31,7 @@ import com.dxhy.order.consumer.dao.OrderProcessInfoMapper;
import com.dxhy.order.consumer.model.OderDetailInfo;
import com.dxhy.order.consumer.model.PageOrderExt;
import com.dxhy.order.consumer.model.page.PageRequestVO;
import com.dxhy.order.consumer.modules.manager.service.InvoiceDataService;
import com.dxhy.order.consumer.modules.order.model.PageInvoiceItem;
import com.dxhy.order.consumer.modules.order.model.PageKySlReq;
import com.dxhy.order.consumer.modules.order.model.PageKySlRsp;
@ -176,7 +177,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
@Resource
private GsClientMapper gsClientMapper;
@Autowired
@Resource
private BuyerMapper buyerMapper;
@Resource
@ -188,6 +189,9 @@ public class OrderInfoServiceImpl implements OrderInfoService {
@Resource
private OrderMergeService orderMergeService;
@Resource
private InvoiceDataService invoiceDataService;
DecimalFormat format = new DecimalFormat("#.###");
@Override
@ -1520,7 +1524,10 @@ public class OrderInfoServiceImpl implements OrderInfoService {
OrderProcessInfo op = null;
if(StrUtil.isNotBlank(commonOrderInfo.getOrderInfo().getBzdh())){
Map map = new HashMap();
map.put("bzdh",commonOrderInfo.getOrderInfo().getBzdh());
map.put("bzdh",commonOrderInfo.getOrderInfo().getBzdh().trim());
if(StringUtils.isNotBlank(commonOrderInfo.getOrderInfo().getDdh())){
map.put("ddh",commonOrderInfo.getOrderInfo().getDdh().trim());
}
List<OrderProcessInfo> orderProcessInfos = orderProcessInfoMapper.queryOrderInfo(map, null, null);
if(orderProcessInfos.size()!=1){
return R.error("根据报账单号未查到到结算单或查询到多条结算单,请检查!");
@ -1555,6 +1562,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
// 冲红生成待开单据
commonOrderInfo.setTerminalCode(terminalCode);
commonOrderInfo.getOrderInfo().setSksbCode(terminalCode);
commonOrderInfo.setProcessInfo(op);
R excuSingle = generateReadyOpenOrderService.reshRed(commonOrderInfo, uid);
if (!excuSingle.get(OrderManagementConstant.CODE).equals(OrderInfoContentEnum.SUCCESS.getKey())) {
return R.error().put(OrderManagementConstant.CODE, OrderInfoContentEnum.RECEIVE_FAILD.getKey())
@ -1744,11 +1752,18 @@ public class OrderInfoServiceImpl implements OrderInfoService {
}
@Override
public int updateBillNumber(String bzdh,String orderInfoId){
public int updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh){
OrderProcessInfo orderProcessInfo = new OrderProcessInfo();
orderProcessInfo.setBzdh(bzdh);
orderProcessInfo.setOrderInfoId(orderInfoId);
return orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo,null);
int i = orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo, null);
if(i > 0) {
Map map = new HashMap();
map.put("ddqqlsh","");
map.put("xhfNsrsbh","");
invoiceDataService.manualPushInvoice(Arrays.asList(map));
}
return i;
}
@Override
@ -2099,6 +2114,129 @@ public class OrderInfoServiceImpl implements OrderInfoService {
return Boolean.TRUE;
}
/**
*
* @param operation 0 开票1 作废 2冲红
* @param params发票请求流水号集合信息表编号
* @return
*/
@Override
public R checkInvoiceSync(String operation,String nsrsbh,String params){
// TODO 过滤一层系统来源
List<OrderProcessInfo> orderProcessInfos = null;
Map<String, List<OrderProcessInfo>> collect = null;
switch (operation){
case "0":
//根据报账单号查询未开发票数,且有效 param:发票请求流水号集合,是否需要添加来源校验
orderProcessInfos = orderProcessInfoMapper.queryOrderProcessInfoByBzdhs(Arrays.asList(params.split(",")), Arrays.asList(nsrsbh));
//按照报账单分组统计
if(orderProcessInfos == null || orderProcessInfos.isEmpty()){
return R.error("根据报账单号未查询到数据");
}
collect = orderProcessInfos.stream().collect(Collectors.groupingBy(t -> t.getBzdh()));
Map<String, List<String>> collect1 = Arrays.stream(params.split(",")).collect(Collectors.groupingBy(t -> t));
StringBuffer sb = new StringBuffer();
for (String s : collect1.keySet()) {
if(collect1.get(s).size() != collect.get(s).size()){
sb.append("报账单号:").append(s).append("存在多笔未开订单,");
}
}
if(StringUtils.isNotBlank(sb.toString())){
return R.error(sb.toString().substring(0,sb.toString().length()-1));
}
break;
case "1":
//根据根据发票流水号查询报账单号,报账单号查询未作废发票数,且有效 param:发票请求流水号集合
//1、根据流水号查询报账单号对应的流水号,如果查为1条,则过滤跳过,如果存在多条且有未开具提示
// 2、如果存在多条且有未作废的提示,如果存在已冲红提示
//AND ( oii.zf_bz = '0' OR oii.ch_bz = '0' )
List<String> paramList = Arrays.asList(params.split(","));
orderProcessInfos = orderProcessInfoMapper.selectOrderProcessByFpqqlshs(paramList, Arrays.asList(nsrsbh));
if(orderProcessInfos == null || orderProcessInfos.isEmpty()){
return R.error("根据报账单号未查询到数据");
}
if(orderProcessInfos.stream().filter(t->OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(t.getXtly())).count() == 0){
return R.ok();
}
collect = orderProcessInfos.stream().collect(Collectors.groupingBy(t -> t.getBzdh()));
StringBuffer sb1 = new StringBuffer();
List<String> fpqqlsh = new ArrayList<>();
for (String s : collect.keySet()) {
List<OrderProcessInfo> orderProcessInfos1 = collect.get(s);
if(orderProcessInfos1.size() > 1){
//如果全部开具成功再添加否则返回报错信息
int count = (int)orderProcessInfos1.stream()
.filter(t -> OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt()) || OrderInfoEnum.ORDER_STATUS_7.getKey().equals(t.getDdzt())).count();
if(orderProcessInfos1.size() != count){
sb1.append(String.format("本次作废存在商旅发票,报账单:%s存在未开具成功的结算单;",s));
continue;
}
fpqqlsh.addAll(orderProcessInfos1.stream().map(t -> t.getFpqqlsh()).collect(Collectors.toList()));
}
}
//直接return ,存在未开具情况不查作废情况了
if(StringUtils.isNotBlank(sb1.toString())){
return R.error(sb1.toString());
}
if(!fpqqlsh.isEmpty()){
List<OrderInvoiceInfo> invoiceInfos = orderInvoiceInfoMapper.selectInvoiceInfoByFpqqlshs(fpqqlsh);
List<String> collect2 = invoiceInfos.stream().filter(t -> !paramList.contains(t.getFpqqlsh())).map(t -> t.getFphm()).collect(Collectors.toList());
if(!collect2.isEmpty()){
return R.error(String.format("本次作废存在商旅发票,以下发票号码未作废:%s,请注意" ,collect2.stream().collect(Collectors.joining(",")) ));
}
}
break;
case "2":
//根据信息表编号查询到原发票号码的报账单 查询此报账单号是否存在多笔发票 param:信息表编号集合
//通过原发票号码 查询报账单号,查到对应流水号,在通过流水号查找 另外一张发票的状态
/**
* 原发票号码 查询order_invoice_info 在联查 order_process_info 查报账单号再通过报账单号反查 发票请求流水号
* 查到流水号在查红字冲红
*/
List<String> list = Arrays.asList(params.split(","));
List<String> yFpdmHm = list.stream().map(t->{
return t.replace("-","");
}).collect(Collectors.toList());
orderProcessInfos = orderProcessInfoMapper.selectOrderProcessByYFpdmHm(yFpdmHm, Arrays.asList(nsrsbh));
if(orderProcessInfos == null || orderProcessInfos.isEmpty()){
return R.error("根据原发票代码号码未查询到数据");
}
if(orderProcessInfos.stream().filter(t->OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(t.getXtly())).count() == 0){
return R.ok();
}
collect = orderProcessInfos.stream().collect(Collectors.groupingBy(t -> t.getBzdh()));
StringBuffer sb2 = new StringBuffer();
List<String> yfpqqlsh = new ArrayList<>();
for (String s : collect.keySet()) {
List<OrderProcessInfo> orderProcessInfos1 = collect.get(s);
if(orderProcessInfos1.size() > 1){
//如果全部开具成功再添加否则返回报错信息
int count = (int)orderProcessInfos1.stream()
.filter(t -> OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt()) || OrderInfoEnum.ORDER_STATUS_7.getKey().equals(t.getDdzt())).count();
if(orderProcessInfos1.size() != count){
sb2.append(String.format("本次冲红存在商旅发票,报账单:%s存在未开具成功的结算单;",s));
continue;
}
yfpqqlsh.addAll(orderProcessInfos1.stream().map(t -> t.getFpqqlsh()).collect(Collectors.toList()));
}
}
//直接return ,存在未开具情况不查作废情况了
if(StringUtils.isNotBlank(sb2.toString())){
return R.error(sb2.toString());
}
if(!yfpqqlsh.isEmpty()){
List<OrderInvoiceInfo> invoiceInfos = orderInvoiceInfoMapper.selectInvoiceInfoByFpqqlshs(yfpqqlsh);
List<String> collect2 = invoiceInfos.stream().filter(t -> !list.contains(t.getFpdm() + "-" + t.getFphm())).map(t -> t.getFphm()).collect(Collectors.toList());
if(!collect2.isEmpty()){
return R.error(String.format("本次冲红存在商旅发票,以下发票号码需冲红:%s,请注意;",collect2.stream().collect(Collectors.joining(","))));
}
}
break;
}
return R.ok();
}
private void completeCommodityMessageBySpid(OrderItemInfo item, CommodityCodeEntity commodity) {
//商品编码
item.setSpbm(commodity.getSpbm());

@ -64,6 +64,11 @@ public class OrderProcessServiceImpl implements OrderProcessService {
//订单与原始订单都需要使用,不能添加有效状态判断
return orderProcessInfoMapper.queryOrderProcessInfoByFpqqlsh(fpqqlsh, shList);
}
@Override
public List<OrderProcessInfo> queryOrderProcessInfoByBzdh(String bzdh, List<String> shList){
return orderProcessInfoMapper.queryOrderProcessInfoByBzdh(bzdh, shList);
}
@Override
public List<OrderProcessInfo> selectOrderProcessInfoByDdqqpch(String ddqqpch, List<String> shList) {

@ -85,10 +85,10 @@ public class PushTicketPoolServiceImpl implements PushTicketPoolService {
OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoMapper.selectOrderInvoiceInfo(orderInvoiceInfo1, shList);
log.info("{}推送接口orderInvoiceInfo数据:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(orderInvoiceInfo));
if (ObjectUtil.isEmpty(orderInvoiceInfo) || !OrderInfoEnum.INVOICE_STATUS_2.getKey().equals(orderInvoiceInfo.getKpzt())) {
log.warn("{}发票数据不存在,或者发票状态不是开票中,数据不进行推送", LOGGER_MSG);
return R.ok();
}
// if (ObjectUtil.isEmpty(orderInvoiceInfo) || !OrderInfoEnum.INVOICE_STATUS_2.getKey().equals(orderInvoiceInfo.getKpzt())) {
// log.warn("{}发票数据不存在,或者发票状态不是开票中,数据不进行推送", LOGGER_MSG);
// return R.ok();
// }
if (ConfigureConstant.STRING_Y.equals(openApiConfig.configPushTicketPoolStatus())) {

@ -78,7 +78,8 @@ public class InvoiceOpenGateRestApi {
try {
PoCommonRequestParam requestParam = JsonUtils.getInstance().parseObject(param, PoCommonRequestParam.class);
String interfaceName = "";
if(OrderInfoEnum.INTERFACE_BUSINESS_ID_FPKJ.getKey().equals(requestParam.getIS_INPUT().getIFYWID())){
if(OrderInfoEnum.INTERFACE_BUSINESS_ID_FPKJ.getKey().equals(requestParam.getIS_INPUT().getIFYWID())
||OrderInfoEnum.INTERFACE_BUSINESS_SNYX_FPKJ.getKey().equals(requestParam.getIS_INPUT().getIFYWID())){
interfaceName = ConfigurerInfo.GENERATE_QD_INVOICE;
}else if(OrderInfoEnum.INTERFACE_BUSINESS_ID_DDZTGX.getKey().equals(requestParam.getIS_INPUT().getIFYWID())){
interfaceName = ConfigurerInfo.ORDER_STATUS_UPDATE;

@ -23,6 +23,10 @@ public class FpkjReqSap {
* 数据来源
*/
private String ZSJLY;
/**
* 山能易行系统来源
*/
private String ZSNYX;
/**
* 操作状态
*/
@ -39,6 +43,10 @@ public class FpkjReqSap {
* 购方编码
*/
private String ZGFBH;
/**
* 开票类型
*/
private String ZKPLX;
/**
* 不含税金额(SAP)
*/

@ -43,4 +43,9 @@ public class ZffptsV5 extends ResponseV4BO implements Serializable {
* 作废原因
*/
private String ZFYY;
/**
* 结算单号
*/
private String DDH;
}

@ -348,6 +348,12 @@ public class DdfpxxV5 {
* 数据权限ID
*/
private String ENTID;
private String docuId;
private String xtly;
private String gsClients;
}

@ -7,6 +7,8 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.dxhy.order.constant.*;
import com.dxhy.order.consumer.dao.InterfaceRequestDataMapper;
import com.dxhy.order.consumer.modules.order.model.GsClient;
import com.dxhy.order.exception.InterfaceException;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.model.*;
@ -103,6 +105,9 @@ public class InterfaceServiceImplV5 implements InterfaceServiceV5 {
@Resource
private OrderItemInfoService orderItemInfoService;
@Resource
private InterfaceRequestDataMapper interfaceRequestDataMapper;
@Resource
private QuickCodeInfoService quickCodeInfoService;
@ -443,6 +448,8 @@ public class InterfaceServiceImplV5 implements InterfaceServiceV5 {
OrderInfo orderInfo = orderInfoService.selectOrderInfoByOrderId(orderProcessInfo.getOrderInfoId(), shList);
OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfoByFpqqlsh(orderProcessInfo.getFpqqlsh(), shList);
InterfaceRequestData interfaceRequestData = interfaceRequestDataMapper.selectByBatchId(orderProcessInfo.getBzdh(), "GenerateQdInvoice");
String ddzt = orderProcessInfo.getDdzt();
String sbyy = orderProcessInfo.getSbyy();
if (orderInfo == null) {
@ -460,7 +467,7 @@ public class InterfaceServiceImplV5 implements InterfaceServiceV5 {
/**
* 数据组装
*/
DdfpxxV5 ddfpxx = BeanTransitionV5Utils.transitionOrderInvoiceInfoV5(orderInfo, orderProcessInfo, orderInvoiceInfo);
DdfpxxV5 ddfpxx = BeanTransitionV5Utils.transitionOrderInvoiceInfoV5(orderInfo, orderProcessInfo, orderInvoiceInfo,interfaceRequestData);
/**
* 订单状态返回:

@ -390,9 +390,9 @@ public class SDEnregyServiceImpl extends SDEnregyServiceAbstract {
commodityCodeEntity.setSortId((long) i);
// 维护税编和商品编码
if (commodityCodeEntity != null && StringUtils.isNotBlank(commodityCodeEntity.getSsflMc())) {
commodityCodeEntity.setSsflMc(commodityCodeEntity.getSsflMc());
}
// if (commodityCodeEntity != null && StringUtils.isNotBlank(commodityCodeEntity.getSsflMc())) {
// commodityCodeEntity.setSsflMc(commodityCodeEntity.getSsflMc());
// }
if (commodityCodeEntity != null && StringUtils.isNotBlank(commodityCodeEntity.getSpbm())) {
commodityCodeEntity.setSpbm(commodityCodeEntity.getSpbm());
// commodityCodeEntity.setWlflbm(commodityCodeEntity.getSpbm());

@ -64,6 +64,7 @@ import org.springframework.beans.BeanUtils;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author 杨士勇
@ -3485,7 +3486,7 @@ public class BeanTransitionUtils {
DdtxxBO ddtxxBO = new DdtxxBO();
List<DdmxxxBO> ddmxList = new ArrayList<>();
if (OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(isinput.getSYSID())) {
if (OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(isinput.getSYSID()) || OrderInfoEnum.SYS_SOURCE_S4.getKey().equals(isinput.getSYSID())) {
String zdataString = isinput.getZDATA();
FpkjReqSap req = JsonUtils.getInstance().parseObject(zdataString, FpkjReqSap.class);
//批次信息
@ -3505,10 +3506,10 @@ public class BeanTransitionUtils {
// ddtxxBO.setXHFYH("");
// ddtxxBO.setXHFZH("");
// } else {
ddtxxBO.setXHFDZ(deptEntity.getTaxpayerAddress());
ddtxxBO.setXHFDH(deptEntity.getTaxpayerPhone());
ddtxxBO.setXHFYH(deptEntity.getTaxpayerBank());
ddtxxBO.setXHFZH(deptEntity.getTaxpayerAccount());
ddtxxBO.setXHFDZ(deptEntity.getTaxpayerAddress());
ddtxxBO.setXHFDH(deptEntity.getTaxpayerPhone());
ddtxxBO.setXHFYH(deptEntity.getTaxpayerBank());
ddtxxBO.setXHFZH(deptEntity.getTaxpayerAccount());
// }
ddtxxBO.setGMFBM(req.getZGFBH());
ddtxxBO.setKPR(req.getZKPRXM());
@ -3518,6 +3519,9 @@ public class BeanTransitionUtils {
ddtxxBO.setHJJE(req.getZBHSJE());
ddtxxBO.setHJSE(req.getZZSE());
ddtxxBO.setDDH(req.getZJSDH());
if(StringUtils.isNotBlank(req.getZSNYX()) && ConfigureConstant.STRING_X.equals(req.getZSNYX())){
ddtxxBO.setDDH("");
}
ddtxxBO.setBZDH(req.getZBZDH());
ddtxxBO.setXTLY(isinput.getSYSID());
//如果为X,表示数据来自电商系统,开票完成后需要推送给电商系统开票数据及板式文件。
@ -3537,6 +3541,9 @@ public class BeanTransitionUtils {
if(StringUtils.isNotBlank(req.getZDSXT()) && StringUtils.isNotBlank(req.getZDSYWFL())){
ddtxxBO.setXTLY(OrderInfoEnum.SYS_SOURCE_DSXT.getKey()+req.getZDSYWFL());
}
if(StringUtils.isNotBlank(req.getZSNYX()) && ConfigureConstant.STRING_X.equals(req.getZSNYX())){
ddtxxBO.setXTLY(OrderInfoEnum.SYS_SOURCE_SNYXX.getKey());
}
ddtxxBO.setGSDM(req.getBUKRS());
ddtxxBO.setENTID(deptEntity.getDeptId());
ddtxxBO.setBHZT(ConfigureConstant.STRING_0);
@ -3607,6 +3614,13 @@ public class BeanTransitionUtils {
}
ddmxxxBO.setPH(detail.getCHARG());
ddmxxxBO.setKB(ObjectUtil.isNull(detail.getKTYPE())?"":detail.getKTYPE()+(ObjectUtil.isNull(detail.getKNAME())?"":detail.getKNAME()));
BigDecimal decimal = new BigDecimal("0");
if(StringUtils.isNotBlank(ddmxxxBO.getDJ()) && decimal.compareTo(new BigDecimal(ddmxxxBO.getDJ())) == 0) {
ddmxxxBO.setDJ("");
}
if (StringUtils.isNotBlank(ddmxxxBO.getSPSL()) && decimal.compareTo(new BigDecimal(ddmxxxBO.getSPSL())) == 0) {
ddmxxxBO.setSPSL("");
}
//判断单价*数量与金额的差额大于0.01,大于的话则反算
//判断小数点后位数,默认为8位,如果为全电,为15位
if(!ConfigureConstant.STRING_1.equals(ddmxxxBO.getFPHXZ())){
@ -3630,24 +3644,56 @@ public class BeanTransitionUtils {
ddtxxBO.setHJSE("0");
}
}
ddzxxBO.setDDTXX(ddtxxBO);
ddzxxBO.setDDMXXX(ddmxList);
ddzxxList.add(ddzxxBO);
//如果是山能易行按照物料编码分组拆分订单
if(StringUtils.isNotBlank(ddtxxBO.getXTLY()) && OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(ddtxxBO.getXTLY())){
Map<String, List<DdmxxxBO>> collect = ddmxList.stream().collect(Collectors.groupingBy(t -> t.getZXBM()));
log.info("拆分数据:{}", JSONObject.toJSONString(collect));
int randomMun = 1;
for (Map.Entry<String, List<DdmxxxBO>> listEntry : collect.entrySet()) {
List<DdmxxxBO> ddmxxxBOS = listEntry.getValue();
DdzxxBO ddzxxBONew = new DdzxxBO();
DdtxxBO ddtxxBONew = new DdtxxBO();
List<DdmxxxBO> ddmxLists = new ArrayList<>();
BeanUtils.copyProperties(ddtxxBO, ddtxxBONew);
BigDecimal zje = new BigDecimal("0.00");
BigDecimal bhsje = new BigDecimal("0.00");
BigDecimal se = new BigDecimal("0.00");
for (DdmxxxBO ddmxxxBO : ddmxxxBOS) {
if (StringUtils.isNotBlank(ddmxxxBO.getHSBZ()) && OrderInfoEnum.HSBZ_0.getKey().equals(ddmxxxBO.getHSBZ())) {
//不含稅
BigDecimal bigDecimal = new BigDecimal(ddmxxxBO.getJE()).add(new BigDecimal(ddmxxxBO.getSE()));
zje = zje.add(bigDecimal);
bhsje = bhsje.add(new BigDecimal(ddmxxxBO.getJE()));
se = se.add(new BigDecimal(ddmxxxBO.getSE()));
} else {
//含稅
zje = zje.add(new BigDecimal(ddmxxxBO.getJE()));
}
}
ddtxxBONew.setDDQQLSH(isinput.getSAPKEY() + "0" + randomMun);
ddtxxBONew.setHJJE(bhsje.toPlainString());
ddtxxBONew.setHJSE(se.toPlainString());
ddtxxBONew.setJSHJ(zje.toPlainString());
ddmxLists.addAll(ddmxxxBOS);
ddzxxBONew.setDDTXX(ddtxxBONew);
ddzxxBONew.setDDMXXX(ddmxLists);
ddzxxList.add(ddzxxBONew);
randomMun++;
}
}else{
ddzxxBO.setDDTXX(ddtxxBO);
ddzxxBO.setDDMXXX(ddmxList);
ddzxxList.add(ddzxxBO);
}
ddpcxxReqBO.setDDPCXX(ddpcxxBO);
ddpcxxReqBO.setDDZXX(ddzxxList);
log.info("转换后的DdpcxxReqBO:{}", JSONObject.toJSONString(ddpcxxReqBO));
return ddpcxxReqBO;
}
public static void main(String[] args) {
String zje = DecimalCalculateUtil.bigDecimalAdd("2", "1");
if(DecimalCalculateUtil.stringCompare(zje,"3") != 0){
System.out.println("00");
}
System.out.println("988989");
}
/**
* @Description: 将标准开票响应参数转换成PO接口开票响应参数
* @Param: [ddpcxxRspV5]

@ -4,9 +4,12 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dxhy.order.constant.ConfigureConstant;
import com.dxhy.order.constant.OrderInfoEnum;
import com.dxhy.order.consumer.openapi.protocol.po.PoCommonRequestParam;
import com.dxhy.order.consumer.openapi.protocol.po.generateinvoice.sap.FpkjReqSap;
import com.dxhy.order.model.*;
import com.dxhy.order.utils.CommonUtils;
import com.dxhy.order.consumer.openapi.protocol.v5.order.*;
import com.dxhy.order.utils.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -33,7 +36,7 @@ public class BeanTransitionV5Utils {
* @param orderInvoiceInfo
* @return
*/
public static DdfpxxV5 transitionOrderInvoiceInfoV5(OrderInfo orderInfo, OrderProcessInfo orderProcessInfo, OrderInvoiceInfo orderInvoiceInfo) {
public static DdfpxxV5 transitionOrderInvoiceInfoV5(OrderInfo orderInfo, OrderProcessInfo orderProcessInfo, OrderInvoiceInfo orderInvoiceInfo,InterfaceRequestData generateQdInvoice) {
DdfpxxV5 ddfpxxV5 = transitionOrderInvoiceInfoV5(orderInfo, orderInvoiceInfo);
ddfpxxV5.setYWLX(orderProcessInfo.getYwlx());
ddfpxxV5.setKPFS(orderProcessInfo.getKpfs());
@ -41,6 +44,23 @@ public class BeanTransitionV5Utils {
ddfpxxV5.setDDLX(orderProcessInfo.getDdlx());
ddfpxxV5.setBillNum(orderProcessInfo.getBzdh());
ddfpxxV5.setCompanyCode(orderProcessInfo.getGsdm());
ddfpxxV5.setXtly(orderProcessInfo.getXtly());
ddfpxxV5.setGsClients(orderProcessInfo.getGsClients());
//gsClients.size()>0?gsClients.get(0).getClient():""
if(StringUtils.isNotBlank(orderProcessInfo.getOriginDdh())){
ddfpxxV5.setDDH(orderProcessInfo.getOriginDdh());
}
if(OrderInfoEnum.SYS_SOURCE_SNYXX.getKey().equals(orderProcessInfo.getXtly())){
try {
String requestData = generateQdInvoice.getRequestData();
PoCommonRequestParam poCommonRequestParam = JsonUtils.getInstance().parseObject(requestData, PoCommonRequestParam.class);
String zdata = poCommonRequestParam.getIS_INPUT().getZDATA();
FpkjReqSap req = JsonUtils.getInstance().parseObject(zdata, FpkjReqSap.class);
ddfpxxV5.setDDH(StringUtils.isBlank(req.getZJSDH())?"":req.getZJSDH());
} catch (Exception e) {
log.error("商旅匹配结算单号{}",e.getMessage());
}
}
return ddfpxxV5;
}
@ -91,9 +111,9 @@ public class BeanTransitionV5Utils {
ddfpxxV5.setDDH(orderInfo.getDdh());
ddfpxxV5.setDDSJ(DateUtil.formatDateTime(orderInfo.getDdrq()));
//初始化为未作废
ddfpxxV5.setZFBZ(OrderInfoEnum.INVALID_INVOICE_0.getKey());
ddfpxxV5.setZFBZ(orderInvoiceInfo.getZfBz());
//初始化为未冲红
ddfpxxV5.setCHBZ(OrderInfoEnum.INTERFACE_RED_INVOICE_0.getKey());
ddfpxxV5.setCHBZ(orderInvoiceInfo.getChBz());
// TODO: 2018/9/21 后期考虑添加订单类型和订单状态等数据.
if (ObjectUtil.isNotNull(orderInvoiceInfo)) {
@ -108,6 +128,7 @@ public class BeanTransitionV5Utils {
ddfpxxV5.setHZXXBBH(StringUtils.isEmpty(orderInvoiceInfo.getHzxxbbh()) ? "" : orderInvoiceInfo.getHzxxbbh());
ddfpxxV5.setZFBZ(StringUtils.isEmpty(orderInvoiceInfo.getZfBz()) ? "" : orderInvoiceInfo.getZfBz());
ddfpxxV5.setCHBZ(StringUtils.isEmpty(orderInvoiceInfo.getChBz()) ? "" : orderInvoiceInfo.getChBz());
ddfpxxV5.setDocuId(StringUtils.isEmpty(orderInvoiceInfo.getDocuId()) ? "" : orderInvoiceInfo.getDocuId());
} else {
ddfpxxV5.setJQBH("");
ddfpxxV5.setFPDM("");

@ -10,7 +10,7 @@ spring:
# active: own
# active: std
# active: dev
#active: test
# active: test
jackson:
# jackson 日期格式化
date-format: yyyy-MM-dd HH:mm:ss
@ -40,8 +40,8 @@ sims:
#订单数据库类型区分,要么mysql,要么Oracle,要么weblogic
db: mysql
#订单redis数据库类型区分,要么redis,要么redis-sentinel
redisDb: redis-sentinel
# redisDb: redis
# redisDb: redis-sentinel
redisDb: redis
# 0 mysql 1 oracle
dataType: 0

@ -25,6 +25,13 @@
from interface_request_data
where id = #{id,jdbcType=VARCHAR}
</select>
<select id="selectByBatchId" resultMap="ResultMapWithBLOBs">
select
<include refid="Blob_Column_List" />
from
interface_request_data
where batch_id = #{batchId} and ywlx = #{ywlx} order by create_time desc limit 1
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
delete from interface_request_data
where id = #{id,jdbcType=VARCHAR}

@ -144,6 +144,72 @@
</if>
</select>
<select id="queryOrderProcessInfoByBzdh" parameterType="java.lang.String" resultMap="BaseResultMap">
SELECT
op.*
FROM
order_process_info op
inner join order_invoice_info oii on oii.order_info_id = op.order_info_id
WHERE
op.bzdh = #{bzdh,jdbcType=VARCHAR}
<if test="shList != null and shList.size() == 0">
and op.xhf_nsrsbh = ''
</if>
<if test="shList != null and shList.size() == 1">
and op.xhf_nsrsbh =
<foreach collection="shList" index="index" item="item">
#{item}
</foreach>
</if>
<if test="shList != null and shList.size() > 1">
and op.xhf_nsrsbh in
<foreach collection="shList" index="index" item="item"
open="(" separator="," close=")">
#{item}
</foreach>
</if>
and op.order_status = '0'
and oii.zf_bz = '0'
</select>
<select id="queryOrderProcessInfoByBzdhs" parameterType="java.lang.String" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM
order_process_info op
WHERE
<if test="bzdhs != null and bzdhs.size() == 1">
bzdh =
<foreach collection="bzdhs" index="index" item="bzdh">
#{bzdh,jdbcType=VARCHAR}
</foreach>
</if>
<if test="bzdhs != null and bzdhs.size() > 1">
bzdh in
<foreach collection="bzdhs" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="shList != null and shList.size() == 0">
and xhf_nsrsbh = ''
</if>
<if test="shList != null and shList.size() == 1">
and xhf_nsrsbh =
<foreach collection="shList" index="index" item="item">
#{item}
</foreach>
</if>
<if test="shList != null and shList.size() > 1">
and xhf_nsrsbh in
<foreach collection="shList" index="index" item="item"
open="(" separator="," close=")">
#{item}
</foreach>
</if>
and order_status = '0'
and ddzt in ('0','1','2','3')
</select>
<!--根据发票请求批次号获取订单数据-->
<select id="selectOrderProcessInfoByDdqqpch" resultMap="BaseResultMap"
parameterType="java.lang.String">
@ -1317,6 +1383,61 @@
</if>
</where>
</select>
<select id="selectOrderProcessByFpqqlshs" resultType="com.dxhy.order.model.OrderProcessInfo">
SELECT
op.fpqqlsh,op.bzdh,op.ddzt,op.xtly
FROM
order_process_info op
WHERE
op.bzdh IN (
SELECT
t.bzdh
FROM
order_process_info t
WHERE
t.fpqqlsh IN
<foreach collection="fpqqlshs" item="fpqqlsh" open="(" separator="," close=")">
#{fpqqlsh}
</foreach>
<if test="shList != null and shList.size() == 0">
and xhf_nsrsbh = ''
</if>
<if test="shList != null and shList.size() == 1">
and xhf_nsrsbh =
<foreach collection="shList" index="index" item="item">
#{item}
</foreach>
</if>
<if test="shList != null and shList.size() > 1">
and xhf_nsrsbh in
<foreach collection="shList" index="index" item="item"
open="(" separator="," close=")">
#{item}
</foreach>
</if>
AND t.order_status = '0'
AND t.fpzl_dm in ('0','2')
)
</select>
<select id="selectOrderProcessByYFpdmHm" resultType="com.dxhy.order.model.OrderProcessInfo">
SELECT
op.fpqqlsh,op.bzdh,op.ddzt,op.xtly
FROM
order_process_info op
WHERE
op.bzdh IN (
SELECT
op1.bzdh
FROM
order_process_info op1 INNER JOIN order_invoice_info oii on op1.order_info_id = oii.order_info_id
WHERE
CONCAT(oii.fpdm,oii.fphm) IN
<foreach collection="yFpdmHms" item="yFpdmHm" open="(" separator="," close=")">
#{yFpdmHm}
</foreach>
AND op1.order_status = '0'
)
</select>
<select id="queryOrderInfoTotalAmount"
resultType="com.dxhy.order.consumer.modules.order.model.vo.OrderInfoTotalAmountVO">
<bind name="dataType" value="${dataType}"/>

@ -246,4 +246,6 @@ public interface OrderInvoiceInfoMapper {
@Param("entList") List<String> entList);
List<String> countInoviceInfo(@Param("orderInfoIds")List<String> orderInfoIds);
List<OrderInvoiceInfo> selectInvoiceInfoByFpqqlshs(@Param("fpqqlshs") List<String> fpqqlshs);
}

@ -1097,6 +1097,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService {
//开票成功后并且是红票需要更新对应蓝票状态,冲红标志和剩余可冲红金额
if (hzfp) {
//全电冲红后修改蓝字的冲红标志
dealRedInvoice(orderInvoiceInfo.getFpqqlsh(), rabbitMqCommonInvoice.getKpzt(), shList);
}

@ -2249,4 +2249,16 @@
</if>
</where>
</update>
<select id="selectInvoiceInfoByFpqqlshs" resultType="com.dxhy.order.model.OrderInvoiceInfo">
SELECT
oii.fpqqlsh,oii.fpdm,oii.fphm,oii.ddh
FROM
order_invoice_info oii
WHERE
oii.fpqqlsh IN
<foreach collection="fpqqlshs" item="fpqqlsh" open="(" separator="," close=")">
#{fpqqlsh}
</foreach>
AND ( oii.zf_bz = '0' OR oii.ch_bz = '0' )
</select>
</mapper>

Loading…
Cancel
Save