Kaynağa Gözat

Merge branch 'master' of http://git.dongkesoft.com:9001/iBOSS-2.0-Mini/iboss-server-mdm

zhoux 1 yıl önce
ebeveyn
işleme
824d92e239

+ 2 - 2
src/main/java/com/dk/mdm/service/mst/DictionaryDataService.java

@@ -115,7 +115,7 @@ public class DictionaryDataService extends BaseService<DictionaryData> {
         dictionaryData.setDataCode(uniqueNoteCode.get("outNote").toString());
 
         // 标准版账户类别新建要在资金账户表里插入一条一样的,编辑时两个表一起更新;专业版逻辑不变
-        if (dictionaryDataVO.getDictCode().equals("基础资料-账户") && dictionaryDataVO.getGradeCode() != null && dictionaryDataVO.getGradeCode().equals("STD")) {
+        if (dictionaryDataVO.getDictCode().equals("基础资料-账户") && dictionaryDataVO.getGradeCode() != null && dictionaryDataVO.getGradeCode().equals(Constant.GradeCode.STD.getName())) {
             //新建资金账户
             String staffId = authUtils.getStaff().getStaffId();
             moneyAccountService.insert(new MoneyAccountVO().setAccDate(LocalDate.now())
@@ -155,7 +155,7 @@ public class DictionaryDataService extends BaseService<DictionaryData> {
             dictionaryDataMapper.updateFlgDefault(new DictionaryDataQuery().setCpId(dictionaryData1.getCpId()).setDictCode(dictionaryData1.getDictCode()));
         }
 
-        if (dictionaryDataVO.getDictCode().equals("基础资料-账户") && dictionaryDataVO.getGradeCode() != null && dictionaryDataVO.getGradeCode().equals("STD")) {
+        if (dictionaryDataVO.getDictCode().equals("基础资料-账户") && dictionaryDataVO.getGradeCode() != null && dictionaryDataVO.getGradeCode().equals(Constant.GradeCode.STD.getName())) {
             //编辑资金账户
             ResponseResultVO<PageList<MoneyAccountResponse>> pageListResponseResultVO = moneyAccountService.selectByCond(new MoneyAccountQuery().setMacType(dictionaryDataVO.getDataId()).setCpId(authUtils.getStaff().getCpId()));
             if(pageListResponseResultVO.getData().getList() != null && pageListResponseResultVO.getData().getList().size() > 0){

+ 55 - 16
src/main/java/com/dk/mdm/service/sale/OrderService.java

@@ -317,14 +317,33 @@ public class OrderService extends BaseService<Order> {
 
         // 订单明细保存
         if (orderVO.getItemList() != null && orderVO.getItemList().size() > 0) {
+            // 使用HashMap来存储SupName到SupId的映射
+            Map<String, String> supNameToSupIdMap = new HashMap<>();
             for (OrderItemVO orderItemVO : orderVO.getItemList()) {
-                //外协品供应上只有name 没有id 的时候 要新建供应商
-                if (orderItemVO.getSkuId() == null) { //说明外协品
-                    if (orderItemVO.getSupId() == null) { //说明在库里不存在这个供应商
-                        Supplier supplier = supplierService.saleinsert(new SupplierVo().setSupName(orderItemVO.getSupName()).setSupType("供应商类别-外协").setCpId(authUtils.getStaff().getCpId()));
-                        orderItemVO.setSupId(supplier.getSupId());
+                // 如果SKU ID为空,表示外协品
+                if (orderItemVO.getSkuId() == null) {
+                    // 如果SupId为空,表示在库中不存在这个供应商
+                    if (orderItemVO.getSupId() == null) {
+                        // 检查是否已经为这个SupName创建了供应商
+                        String existingSupId = supNameToSupIdMap.get(orderItemVO.getSupName());
+                        if (existingSupId == null) {
+                            // 尚未创建,新建供应商
+                            SupplierVo supplierVo = new SupplierVo()
+                                    .setSupName(orderItemVO.getSupName())
+                                    .setSupType("供应商类别-外协")
+                                    .setCpId(authUtils.getStaff().getCpId());
+                            Supplier supplier = supplierService.saleinsert(supplierVo);
+                            // 将新创建的SupId存入映射
+                            supNameToSupIdMap.put(orderItemVO.getSupName(), supplier.getSupId());
+                            // 设置orderItemVO的SupId
+                            orderItemVO.setSupId(supplier.getSupId());
+                        } else {
+                            // 已经创建,直接设置orderItemVO的SupId
+                            orderItemVO.setSupId(existingSupId);
+                        }
                     }
                 }
+
                 OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
                 orderItem.setOrderId(order.getOrderId()).setCpId(order.getCpId()).setOutStatus(Constant.OutStatus.DAICHUKU.getName());
                 if (orderItem.getPriceStd() == null) {
@@ -339,6 +358,8 @@ public class OrderService extends BaseService<Order> {
             }
         }
 
+
+
         /**************************************** 客户收款begin ********************************/
         if (orderVO.getReceiptList() != null && orderVO.getReceiptList().size() > 0) {
             // 商户产品版本
@@ -545,7 +566,7 @@ public class OrderService extends BaseService<Order> {
                 for (OrderItemVO orderItemVO : deleteOrderItemVOList) {
                     orderItemForUpdate = orderItemMapper.selectByIdForUpdate(orderItemVO.getItemId());
                     //当gradeCode为"STD"时,无论outStatus是什么,都直接删除;而当gradeCode不是"STD"时,只有outStatus为DAICHUKU时才允许删除
-                    if ("STD".equals(gradeCode) ||
+                    if (Constant.GradeCode.STD.getName().equals(gradeCode) ||
                             (Constant.OutStatus.DAICHUKU.getName().equals(orderItemForUpdate.getOutStatus()))) {
                         orderItemMapper.deleteById(orderItemVO.getItemId());
                     } else {
@@ -561,7 +582,7 @@ public class OrderService extends BaseService<Order> {
             orderItemForUpdate = orderItemMapper.selectByIdForUpdate(orderItemVO.getItemId());
             // 出库数量
             BigDecimal outintOrOutQty = orderItemForUpdate.getOutingQty().add(orderItemForUpdate.getOutQty());
-            if (!"STD".equals(gradeCode)) {
+            if (!Constant.GradeCode.STD.getName().equals(gradeCode)) {
                 // 商品数量不能小于(出库中数量+已出库数量)
                 if (orderItemVO.getItemQty().compareTo(outintOrOutQty) == -1) {
                     throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
@@ -592,14 +613,33 @@ public class OrderService extends BaseService<Order> {
 
         // 新增的
         List<OrderItemVO> insertOrderItemVOList = orderVO.getItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
+         // 使用HashMap来存储SupName到SupId的映射
+        Map<String, String> supNameToSupIdMap = new HashMap<>();
         for (OrderItemVO orderItemVO : insertOrderItemVOList) {
-            //外协品供应上只有name 没有id 的时候 要新建供应商
-            if (orderItemVO.getSkuId() == null) { //说明外协品
-                if (orderItemVO.getSupId() == null) { //说明在库里不存在这个供应商
-                    Supplier supplier = supplierService.saleinsert(new SupplierVo().setSupName(orderItemVO.getSupName()).setSupType("供应商类别-外协").setCpId(authUtils.getStaff().getCpId()));
-                    orderItemVO.setSupId(supplier.getSupId());
+            // 如果SKU ID为空,表示外协品
+            if (orderItemVO.getSkuId() == null) {
+                // 如果SupId为空,表示在库中不存在这个供应商
+                if (orderItemVO.getSupId() == null) {
+                    // 检查是否已经为这个SupName创建了供应商
+                    String existingSupId = supNameToSupIdMap.get(orderItemVO.getSupName());
+                    if (existingSupId == null) {
+                        // 尚未创建,新建供应商
+                        SupplierVo supplierVo = new SupplierVo()
+                                .setSupName(orderItemVO.getSupName())
+                                .setSupType("供应商类别-外协")
+                                .setCpId(authUtils.getStaff().getCpId());
+                        Supplier supplier = supplierService.saleinsert(supplierVo);
+                        // 将新创建的SupId存入映射
+                        supNameToSupIdMap.put(orderItemVO.getSupName(), supplier.getSupId());
+                        // 设置orderItemVO的SupId
+                        orderItemVO.setSupId(supplier.getSupId());
+                    } else {
+                        // 已经创建,直接设置orderItemVO的SupId
+                        orderItemVO.setSupId(existingSupId);
+                    }
                 }
             }
+
             OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
             orderItem.setOrderId(order.getOrderId()).setCpId(order.getCpId()).setOutStatus(Constant.OutStatus.DAICHUKU.getName());
             orderItem.setItemId(UUID.randomUUID().toString());
@@ -608,7 +648,6 @@ public class OrderService extends BaseService<Order> {
             orderItemVO.setOrderId(orderVO.getOrderId());
         }
 
-
         // 删除业绩信息
         multiOwnerMapper.deleteByOrderId(order.getOrderId());
 
@@ -739,7 +778,7 @@ public class OrderService extends BaseService<Order> {
                 // 更新总账表的锁定金额
                 accountService.updateReceiptLock(recPayForUpdate.getObjectId());
             }
-        } else if ("STD".equals(gradeCode)) {
+        } else if (Constant.GradeCode.STD.getName().equals(gradeCode)) {
             if (orderVO.getReceiptList() != null && orderVO.getReceiptList().size() > 0) {
                 // 计算订单明细的出库中数量,金额合计
                 RecPayItemVO itemSum = orderVO.getReceiptList().stream().reduce((x, y) -> {
@@ -816,7 +855,7 @@ public class OrderService extends BaseService<Order> {
             accountService.updateMac(macId);
         }
         /**************************************** 客户收款end ********************************/
-        if ("STD".equals(gradeCode)) { //订单 转 出库数据
+        if (Constant.GradeCode.STD.getName().equals(gradeCode)) { //订单 转 出库数据
             // 合并两个列表
             List<OrderItemVO> combinedList = Stream.concat(insertOrderItemVOList.stream(), editOrderItemVOList.stream())
                     .collect(Collectors.toList());
@@ -1099,7 +1138,7 @@ public class OrderService extends BaseService<Order> {
 
             String gradeCode = authUtils.getStaff().getGradeCode();
             // 更新总账表的总收款额和可用额
-            if ("STD".equals(gradeCode)) {
+            if (Constant.GradeCode.STD.getName().equals(gradeCode)) {
                 accountService.updateReceipt(recPayForUpdate.getObjectId());
             } else {
                 accountService.updateReceiptLock(recPayForUpdate.getObjectId());