From 1998af7b402d887e53a73ad14b1d8f78279e48c9 Mon Sep 17 00:00:00 2001 From: gaorl Date: Wed, 19 Jul 2023 19:24:18 +0800 Subject: [PATCH] =?UTF-8?q?feature=EF=BC=9A=E8=AE=A2=E5=8D=95=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=88=A0=E9=99=A4=E7=89=A9=E6=96=99=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OrderExcelReadServiceImpl.java | 473 +++++++++--------- .../main/resources/download/OrderExcel.xlsx | Bin 13224 -> 12877 bytes 2 files changed, 235 insertions(+), 238 deletions(-) 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..363bcce2 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,58 +856,58 @@ 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()) && GbkUtils.getGbkLength(orderExcel.getZxbm()) > ConfigureConstant.INT_18) { @@ -1649,8 +1647,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/resources/download/OrderExcel.xlsx b/order-management-consumer/src/main/resources/download/OrderExcel.xlsx index 47ad4f0f09eeeac620e01623b9c5acc5a5d9d7bd..7481c30fd043cb7738d040dd8e88c5d89c18acc5 100644 GIT binary patch delta 4832 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 delta 5125 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