diff --git a/order-management-base-service/pom.xml b/order-management-base-service/pom.xml index 47e3816d..ee0b1755 100644 --- a/order-management-base-service/pom.xml +++ b/order-management-base-service/pom.xml @@ -344,7 +344,7 @@ com.dxhy.base sims-base-file-operate - 6.1.4.2-BASE + 6.1.4.3-BASE compile diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java index d1a12c86..9c8e7fed 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java @@ -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 */ diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java index 3d6652e2..140f52ed 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java @@ -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","订单状态更新"), diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/ResponseStatusEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/ResponseStatusEnum.java new file mode 100644 index 00000000..efda43dd --- /dev/null +++ b/order-management-common/src/main/java/com/dxhy/order/constant/ResponseStatusEnum.java @@ -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; + } +} diff --git a/order-management-common/src/main/java/com/dxhy/order/model/OrderProcessInfo.java b/order-management-common/src/main/java/com/dxhy/order/model/OrderProcessInfo.java index 98470115..7bc1d388 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/OrderProcessInfo.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/OrderProcessInfo.java @@ -193,6 +193,10 @@ public class OrderProcessInfo implements Serializable { * 公司代码 */ private String gsdm; + /** + * 公司对应client + */ + private String gsClients; /** * 驳回状态 */ diff --git a/order-management-common/src/main/java/com/dxhy/order/model/queue/FpTsMqData.java b/order-management-common/src/main/java/com/dxhy/order/model/queue/FpTsMqData.java index 5b343da7..bc0de3bd 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/queue/FpTsMqData.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/queue/FpTsMqData.java @@ -25,6 +25,11 @@ public class FpTsMqData implements Serializable { */ private String fpqqlsh; + /** + * 发票请求流水号 + */ + private String pushBackLsh; + /** * 发票代码 * (作废推送需要) diff --git a/order-management-common/src/main/java/com/dxhy/order/model/queue/ZfTsMqData.java b/order-management-common/src/main/java/com/dxhy/order/model/queue/ZfTsMqData.java index cb0da2a3..726d03eb 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/queue/ZfTsMqData.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/queue/ZfTsMqData.java @@ -32,4 +32,8 @@ public class ZfTsMqData implements Serializable { */ private String fphm; + private String xtly; + + private String bzdh; + } diff --git a/order-management-consumer/pom.xml b/order-management-consumer/pom.xml index dcd8e927..1cb8a44b 100644 --- a/order-management-consumer/pom.xml +++ b/order-management-consumer/pom.xml @@ -325,7 +325,7 @@ com.dxhy.base sims-base-file-operate - 6.1.4.2-BASE + 6.1.4.3-BASE compile diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/constant/ExcelErrorMessageEnum.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/constant/ExcelErrorMessageEnum.java index 33b7af34..4d82f972 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/constant/ExcelErrorMessageEnum.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/constant/ExcelErrorMessageEnum.java @@ -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位"), diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/InterfaceRequestDataMapper.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/InterfaceRequestDataMapper.java index 23fab766..c6b1001a 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/InterfaceRequestDataMapper.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/InterfaceRequestDataMapper.java @@ -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); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java index f9c18ee3..cb349596 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java @@ -51,6 +51,10 @@ public interface OrderProcessInfoMapper { */ OrderProcessInfo queryOrderProcessInfoByFpqqlsh(@Param("fpqqlsh") String fpqqlsh, @Param("shList") List shList); + List queryOrderProcessInfoByBzdh(@Param("bzdh") String bzdh, @Param("shList")List shList); + + List queryOrderProcessInfoByBzdhs(@Param("bzdhs") List bzdhs, @Param("shList")List shList); + /** * 根据批次号查询订单处理表数据 * @@ -160,4 +164,8 @@ public interface OrderProcessInfoMapper { @Param("shList") List shList, @Param("entList") List entList); List getOrderMessageByMap(@Param("map") Map map); + + List selectOrderProcessByFpqqlshs(@Param("fpqqlshs") List fpqqlshs, @Param("shList") List shList); + + List selectOrderProcessByYFpdmHm(@Param("yFpdmHms") List yFpdmHms, @Param("shList") List shList); } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java index 3f0d1fd3..d516b284 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java @@ -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 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 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 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 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 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 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 gsClients = gsClientMapper.selectByGsdm(orderProcessInfo.getGsdm()); //发票开具推送 - DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class); - DdfpxxV5 ddfpxx = ddfpzxxV5.getDDFPXX(); - List ddmxxx = ddfpzxxV5.getDDMXXX(); + List ddfpzxxV5s = JsonUtils.getInstance().jsonToList(content, DdfpzxxV5.class); + //DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class); List mainList = new ArrayList<>(); - FpkjtsReqSap fpkjtsReqSap = new FpkjtsReqSap(); - List 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 ddmxxx = ddfpzxxV5.getDDMXXX(); + FpkjtsReqSap fpkjtsReqSap = new FpkjtsReqSap(); + List 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 orderProcessInfoList = new ArrayList<>(); OrderProcessInfo orderProcessInfo = orderProcessService.queryOrderProcessInfoByFpqqlsh(fpTsMqData.getFpqqlsh(), shList); + List 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 orderItemInfos = orderItemInfoService.selectOrderItemInfoByOrderId(orderProcessInfo.getOrderInfoId(), shList); - List ddmxxxList = BeanTransitionUtils.transitionOrderInvoiceItemV3(orderItemInfos); - List 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 orderProcessInfoRelevantList = orderProcessService.findTopParentList(orderProcessInfo, shList); - List 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 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 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 orderItemInfos = orderItemInfoService.selectOrderItemInfoByOrderId(orderProcessInfo.getOrderInfoId(), shList); + List ddmxxxList = BeanTransitionUtils.transitionOrderInvoiceItemV3(orderItemInfos); + List 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 orderProcessInfoRelevantList = orderProcessService.findTopParentList(orderProcessInfo, shList); + List 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 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 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 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 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 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()); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java index ee5d09f0..003c0018 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java @@ -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()); + } + } } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/ReceiveOrderController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/ReceiveOrderController.java index 5729f8ee..393404bc 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/ReceiveOrderController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/ReceiveOrderController.java @@ -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()) diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java index c366bf0b..1312877d 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java @@ -222,7 +222,7 @@ public interface OrderInfoService { R ratioConversion(List 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 pageRequestList); @@ -246,4 +246,6 @@ public interface OrderInfoService { * @return */ Boolean checkInvoiceRemarksFlag(String entId,String ghfId); + + R checkInvoiceSync(String operation,String nsrsbh,String param); } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderProcessService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderProcessService.java index 3beb8826..9a3eb18a 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderProcessService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderProcessService.java @@ -32,6 +32,8 @@ public interface OrderProcessService { */ OrderProcessInfo queryOrderProcessInfoByFpqqlsh(String fpqqlsh, List shList); + List queryOrderProcessInfoByBzdh(String bzdh, List shList); + /** * 根据订单请求批次号获取发票处理表数据 * diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/GenerateReadyOpenOrderServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/GenerateReadyOpenOrderServiceImpl.java index e498084a..cfe4eaf9 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/GenerateReadyOpenOrderServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/GenerateReadyOpenOrderServiceImpl.java @@ -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()); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderExcelReadServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderExcelReadServiceImpl.java index 971702c4..a8f89664 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderExcelReadServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderExcelReadServiceImpl.java @@ -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 examinData = examinData(newOrderExcel, lastOrderExcel, xhfNsrsbh, - ggxhSet, (i + 1), userId, terminalCode,entId); + Map examinData = examinData(newOrderExcel, lastOrderExcel, xhfNsrsbh,ggxhSet, (i + 1), userId, terminalCode,entId); List resultList = (List) examinData.get("resultList"); //验证扣除额是否合法 if (ObjectUtil.isNotNull(newOrderExcel) && StringUtils.isNotBlank(newOrderExcel.getKce())) { diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java index 8d1a9d26..87f52f24 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java @@ -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 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 orderProcessInfos = null; + Map> 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> 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 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 fpqqlsh = new ArrayList<>(); + for (String s : collect.keySet()) { + List 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 invoiceInfos = orderInvoiceInfoMapper.selectInvoiceInfoByFpqqlshs(fpqqlsh); + List 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 list = Arrays.asList(params.split(",")); + List 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 yfpqqlsh = new ArrayList<>(); + for (String s : collect.keySet()) { + List 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 invoiceInfos = orderInvoiceInfoMapper.selectInvoiceInfoByFpqqlshs(yfpqqlsh); + List 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()); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderProcessServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderProcessServiceImpl.java index c7b974ea..6073cd53 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderProcessServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderProcessServiceImpl.java @@ -64,6 +64,11 @@ public class OrderProcessServiceImpl implements OrderProcessService { //订单与原始订单都需要使用,不能添加有效状态判断 return orderProcessInfoMapper.queryOrderProcessInfoByFpqqlsh(fpqqlsh, shList); } + + @Override + public List queryOrderProcessInfoByBzdh(String bzdh, List shList){ + return orderProcessInfoMapper.queryOrderProcessInfoByBzdh(bzdh, shList); + } @Override public List selectOrderProcessInfoByDdqqpch(String ddqqpch, List shList) { diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/ticketpool/service/impl/PushTicketPoolServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/ticketpool/service/impl/PushTicketPoolServiceImpl.java index d1262ac0..b2dbd139 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/ticketpool/service/impl/PushTicketPoolServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/ticketpool/service/impl/PushTicketPoolServiceImpl.java @@ -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())) { diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java index 6d151fa2..6e602c10 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java @@ -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; diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java index dd925359..2c85dc92 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java @@ -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) */ diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/invalid/ZffptsV5.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/invalid/ZffptsV5.java index 2f8547f5..a4a5df8e 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/invalid/ZffptsV5.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/invalid/ZffptsV5.java @@ -43,4 +43,9 @@ public class ZffptsV5 extends ResponseV4BO implements Serializable { * 作废原因 */ private String ZFYY; + + /** + * 结算单号 + */ + private String DDH; } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/order/DdfpxxV5.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/order/DdfpxxV5.java index 4e97f4f0..77bcf2fa 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/order/DdfpxxV5.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v5/order/DdfpxxV5.java @@ -348,6 +348,12 @@ public class DdfpxxV5 { * 数据权限ID */ private String ENTID; + + private String docuId; + + private String xtly; + + private String gsClients; } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV5.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV5.java index a3b79b96..31fa21e2 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV5.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV5.java @@ -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); /** * 订单状态返回: diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/SDEnregyServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/SDEnregyServiceImpl.java index 08818ea3..f35573aa 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/SDEnregyServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/SDEnregyServiceImpl.java @@ -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()); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java index 29932e95..c0379279 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java @@ -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 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> collect = ddmxList.stream().collect(Collectors.groupingBy(t -> t.getZXBM())); + log.info("拆分数据:{}", JSONObject.toJSONString(collect)); + int randomMun = 1; + for (Map.Entry> listEntry : collect.entrySet()) { + List ddmxxxBOS = listEntry.getValue(); + DdzxxBO ddzxxBONew = new DdzxxBO(); + DdtxxBO ddtxxBONew = new DdtxxBO(); + List 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] diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionV5Utils.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionV5Utils.java index 3eeb06dc..a6fb6b37 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionV5Utils.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionV5Utils.java @@ -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(""); diff --git a/order-management-consumer/src/main/resources/bootstrap.yaml b/order-management-consumer/src/main/resources/bootstrap.yaml index 615d747e..2a9064c5 100644 --- a/order-management-consumer/src/main/resources/bootstrap.yaml +++ b/order-management-consumer/src/main/resources/bootstrap.yaml @@ -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 diff --git a/order-management-consumer/src/main/resources/download/NcpImportExcel.xlsx b/order-management-consumer/src/main/resources/download/NcpImportExcel.xlsx index 32707f03..711c1a2e 100644 Binary files a/order-management-consumer/src/main/resources/download/NcpImportExcel.xlsx and b/order-management-consumer/src/main/resources/download/NcpImportExcel.xlsx differ diff --git a/order-management-consumer/src/main/resources/download/OrderExcel.xlsx b/order-management-consumer/src/main/resources/download/OrderExcel.xlsx index 27258236..36bd070d 100644 Binary files a/order-management-consumer/src/main/resources/download/OrderExcel.xlsx and b/order-management-consumer/src/main/resources/download/OrderExcel.xlsx differ diff --git a/order-management-consumer/src/main/resources/download/QdfpImportExcel.xlsx b/order-management-consumer/src/main/resources/download/QdfpImportExcel.xlsx index fd7b6bac..52f3e233 100644 Binary files a/order-management-consumer/src/main/resources/download/QdfpImportExcel.xlsx and b/order-management-consumer/src/main/resources/download/QdfpImportExcel.xlsx differ diff --git a/order-management-consumer/src/main/resources/mybatis/mapper/InterfaceRequestDataMapper.xml b/order-management-consumer/src/main/resources/mybatis/mapper/InterfaceRequestDataMapper.xml index 785d73d8..cd104cef 100644 --- a/order-management-consumer/src/main/resources/mybatis/mapper/InterfaceRequestDataMapper.xml +++ b/order-management-consumer/src/main/resources/mybatis/mapper/InterfaceRequestDataMapper.xml @@ -25,6 +25,13 @@ from interface_request_data where id = #{id,jdbcType=VARCHAR} + delete from interface_request_data where id = #{id,jdbcType=VARCHAR} diff --git a/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml b/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml index 1944d52f..5728dd5c 100644 --- a/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml +++ b/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml @@ -144,6 +144,72 @@ + + + + + + + SELECT + oii.fpqqlsh,oii.fpdm,oii.fphm,oii.ddh + FROM + order_invoice_info oii + WHERE + oii.fpqqlsh IN + + #{fpqqlsh} + + AND ( oii.zf_bz = '0' OR oii.ch_bz = '0' ) +