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 d1e921cf..3d6652e2 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 @@ -1080,6 +1080,8 @@ public enum OrderInfoEnum { */ MERGE_COMMODITY_RULE_TYPE_0("0", "商品名称、规格型号、税率、单价、税收分类编码均一致"), MERGE_COMMODITY_RULE_TYPE_1("1", "商品名称、规格型号、税率、税收分类编码均一致"), + MERGE_COMMODITY_RULE_TYPE_2("2", "发票行性质、商品名称、物料编码、规格型号、单位、单价、税编、税率均一致"), + MERGE_COMMODITY_RULE_TYPE_3("3", "发票行性质、商品名称、物料编码、规格型号、单位、税编、税率均一致"), /** * 是否全电发票 diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderCommonService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderCommonService.java index 1ef49d5f..5c7150bf 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderCommonService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderCommonService.java @@ -184,6 +184,6 @@ public interface OrderCommonService { List insertOrderEsc, List insertOrderJdc, List shList); @Transactional - void saveItemMergeOrderInfo(CommonOrderInfo commonOrderInfo); + void saveItemMergeOrderInfo(CommonOrderInfo commonOrderInfo,List deleteItem); } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderCommonServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderCommonServiceImpl.java index ea69f8c5..288af405 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderCommonServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderCommonServiceImpl.java @@ -1558,12 +1558,12 @@ public class OrderCommonServiceImpl implements OrderCommonService { } @Override - public void saveItemMergeOrderInfo(CommonOrderInfo commonOrderInfo){ + public void saveItemMergeOrderInfo(CommonOrderInfo commonOrderInfo,List deleteItem){ List orderItemInfoList = commonOrderInfo.getOrderItemInfo(); OrderInfo orderInfo = commonOrderInfo.getOrderInfo(); OrderProcessInfo processInfo = commonOrderInfo.getProcessInfo(); if(!orderItemInfoList.isEmpty()){ - orderItemInfoMapper.deleteItemByItemId(orderItemInfoList.stream().map(t->t.getId()).collect(Collectors.toList())); + orderItemInfoMapper.deleteItemByItemId(deleteItem); orderItemInfoMapper.insertOrderItemByList(orderItemInfoList); } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderMergeServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderMergeServiceImpl.java index 1b00778b..568816c7 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderMergeServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderMergeServiceImpl.java @@ -913,7 +913,7 @@ public class OrderMergeServiceImpl implements OrderMergeService { baseInfoQueryBO.setUserId(String.valueOf(userInfoService.getUser().getUserId())); List sysBaseInfoEntityList = baseInfoService.queryInfoByCache(baseInfoQueryBO); //合并同类商品规则类型,默认为 ‘商品名称、规格型号、税率、单价、税收分类编码均一致’ - String mergeCommodityRuleType = OrderInfoEnum.MERGE_COMMODITY_RULE_TYPE_0.getKey(); + String mergeCommodityRuleType = OrderInfoEnum.MERGE_COMMODITY_RULE_TYPE_2.getKey(); if(CollectionUtil.isNotEmpty(sysBaseInfoEntityList) && Objects.nonNull(sysBaseInfoEntityList.get(0))){ SysBaseInfoEntity sysBaseInfoEntity = sysBaseInfoEntityList.get(0); String value = sysBaseInfoEntity.getValue(); @@ -937,6 +937,8 @@ public class OrderMergeServiceImpl implements OrderMergeService { List mergeOutItem = orderItemInfos.stream().filter(t -> !mergeInItem.contains(t)).collect(Collectors.toList()); String sksbCode = orderInfo.getSksbCode(); boolean termType = OrderInfoEnum.TAX_EQUIPMENT_FGBW.equals(sksbCode) || OrderInfoEnum.TAX_EQUIPMENT_FGUKEY.equals(sksbCode); + //获取合并规则 + String mergeRuleType = queryMergeCommodityRuleType(orderInfo.getNsrsbh()); //根据配置去判断合并规则 Map> collect1 = orderItemInfos.stream().map(t->{ t.setXmmc(StringUtils.isBlank(t.getXmmc())?"":t.getXmmc()); @@ -944,7 +946,7 @@ public class OrderMergeServiceImpl implements OrderMergeService { t.setGgxh(StringUtils.isBlank(t.getGgxh())?"":t.getGgxh()); t.setZxbm(StringUtils.isBlank(t.getZxbm())?"":t.getZxbm()); return t; - }).collect(Collectors.groupingBy(t -> t.getFphxz() + t.getXmmc() + t.getXmdw() + t.getGgxh() + t.getSl() + t.getSpbm() + t.getZxbm())); + }).collect(Collectors.groupingBy(t->OrderMergeUtil.getOrderItemInfoKey(t, mergeRuleType))); List orderItemInfoList = new ArrayList<>(); List deleteItem = new ArrayList<>(); log.debug("明细合并前明细数据,{}",JSONObject.toJSONString(orderItemInfos)); @@ -1024,7 +1026,7 @@ public class OrderMergeServiceImpl implements OrderMergeService { commonOrderInfo.setOrderInfo(orderInfoNew); commonOrderInfo.setProcessInfo(orderProcessInfoNew); try { - apiInvoiceCommonService.saveItemMergeOrderInfo(commonOrderInfo); + apiInvoiceCommonService.saveItemMergeOrderInfo(commonOrderInfo,deleteItem); } catch (Exception e) { log.error("明细合并更新数据库出错{}",e); return R.error();