yzc пре 11 месеци
родитељ
комит
1e383a6121

+ 27 - 20
hx-admin/src/main/resources/application-dev.yml

@@ -4,86 +4,93 @@ spring:
         dynamic:
             strict: true
             primary: base
+            druid:
+                # 初始连接数
+                initialSize: 0
+                # 最小连接池数量
+                minIdle: 0
+                # 最大连接池数量
+                maxActive: 1
             datasource:
                 victoriatourist:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 common:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
 #                oa:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+#                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
 #                    username: root
 #                    password: 5fWD*oa^nso@kmKa
 #                mes:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+#                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
 #                    username: root
 #                    password: 5fWD*oa^nso@kmKa
                 wms:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 item:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 supply:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 base:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
 #                iot:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+#                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
 #                    username: root
 #                    password: 5fWD*oa^nso@kmKa
                 customer:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 purchase:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 account:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
 #                sale:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_sale?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+#                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_sale?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
 #                    username: root
 #                    password: 5fWD*oa^nso@kmKa
 #                mail:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+#                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
 #                    username: root
 #                    password: 5fWD*oa^nso@kmKa
                 kd100:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
 #                ehsd:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_ehsd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+#                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_ehsd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
 #                    username: root
 #                    password: 5fWD*oa^nso@kmKa
 #                jxst:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_jxst?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+#                    url: jdbc:mysql://139.9.102.170:30102/bytesailing_jxst?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
 #                    username: root
 #                    password: 5fWD*oa^nso@kmKa
 
     # redis 配置
     redis:
         # 地址
-        host: 121.37.194.75
+        host: 139.9.102.170
         # 端口,默认为6379
-        port: 30103
+        port: 9673
         # 数据库索引
         database: 5
         # 密码
-        password: Fjhx@pwd123
+        password: ss34dsA3DdsF
         # 连接超时时间
         timeout: 10s
         lettuce:

+ 20 - 41
hx-admin/src/main/resources/application-test.yml

@@ -4,86 +4,65 @@ spring:
         dynamic:
             strict: true
             primary: base
+            druid:
+                # 初始连接数
+                initialSize: 0
+                # 最小连接池数量
+                minIdle: 0
+                # 最大连接池数量
+                maxActive: 1
             datasource:
                 victoriatourist:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 common:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
-#                oa:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: root
-#                    password: 5fWD*oa^nso@kmKa
-#                mes:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: root
-#                    password: 5fWD*oa^nso@kmKa
                 wms:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 item:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 supply:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 base:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
-#                iot:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: root
-#                    password: 5fWD*oa^nso@kmKa
                 customer:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 purchase:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
                 account:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
-#                sale:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_sale?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: root
-#                    password: 5fWD*oa^nso@kmKa
-#                mail:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: root
-#                    password: 5fWD*oa^nso@kmKa
                 kd100:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:30102/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     password: 5fWD*oa^nso@kmKa
-#                ehsd:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_ehsd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: root
-#                    password: 5fWD*oa^nso@kmKa
-#                jxst:
-#                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_jxst?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: root
-#                    password: 5fWD*oa^nso@kmKa
 
     # redis 配置
     redis:
         # 地址
-        host: 121.37.194.75
+        host: 127.0.0.1
         # 端口,默认为6379
-        port: 30103
+        port: 9673
         # 数据库索引
         database: 5
         # 密码
-        password: Fjhx@pwd123
+        password: ss34dsA3DdsF
         # 连接超时时间
         timeout: 10s
         lettuce:

+ 10 - 3
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -481,6 +481,12 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         if (count != 0) {
             throw new ServiceException("产品自定义编码重复");
         }
+        //处理维多利亚扩展
+        String victoriatouristJson = productInfoDto.getVictoriatouristJson();
+        if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
+            JSONObject json = JSONObject.parseObject(victoriatouristJson);
+            productInfoDto.setDeptId(json.getLong("deptId"));
+        }
         this.updateById(productInfoDto);
         ObsFileUtil.editFile(productInfoDto.getFileList(), productInfoDto.getId());
     }
@@ -695,6 +701,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
                     throw new ServiceException(String.format("产品 %s 的部门 %s 不存在", productCode, deptName));
                 }
                 victoriatouristJson.put("deptId", deptId);
+                productInfoDto.setDeptId(deptId);
             }
             //是否组合
             Integer combination = "是".equals(integerStringMap.getOrDefault(20, "")) ? 1 : 0;
@@ -1101,7 +1108,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         }
 
         for (IssueImportExcelBo issueImportExcelBo : excelBoList) {
-            if (ObjectUtil.isEmpty(issueImportExcelBo.getProductCustomCode())){
+            if (ObjectUtil.isEmpty(issueImportExcelBo.getProductCustomCode())) {
                 throw new ServiceException("物品编码不能为空");
             }
         }
@@ -1124,8 +1131,8 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
             //赋值产品信息
             List<ProductInfo> productInfoList = this.list(q -> q.in(ProductInfo::getCustomCode, productCodes));
             //将编码全部转小写
-            productInfoList.forEach(item->item.setCustomCode(item.getCustomCode().toLowerCase()));
-            Map<String, ProductInfo> productInfoMap = productInfoList.stream().collect(Collectors.toMap(ProductInfo::getCustomCode,Function.identity()));
+            productInfoList.forEach(item -> item.setCustomCode(item.getCustomCode().toLowerCase()));
+            Map<String, ProductInfo> productInfoMap = productInfoList.stream().collect(Collectors.toMap(ProductInfo::getCustomCode, Function.identity()));
 
             for (IssueImportExcelBo importExcelBo : excelBoList) {
                 ProductInfo productInfo = productInfoMap.get(importExcelBo.getProductCustomCode().toLowerCase());

+ 12 - 4
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckServiceImpl.java

@@ -12,9 +12,12 @@ import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductClassifyService;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.wms.entity.stock.bo.InOutBo;
 import com.fjhx.wms.entity.stock.dto.StockCheckDto;
 import com.fjhx.wms.entity.stock.dto.StockCheckSelectDto;
 import com.fjhx.wms.entity.stock.dto.StockSelectDto;
+import com.fjhx.wms.entity.stock.emums.InOutType;
+import com.fjhx.wms.entity.stock.emums.StockType;
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockCheck;
 import com.fjhx.wms.entity.stock.po.StockCheckDetails;
@@ -38,7 +41,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -141,13 +147,15 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
         save(stockCheckDto);
         stockCheckDetailsService.saveBatch(list);
 
+        List<InOutBo> inOutBoList = new ArrayList<>();
         for (StockCheckDetails stockCheckDetails : list) {
-            Stock stock = new Stock();
+            InOutBo stock = new InOutBo();
             stock.setProductId(stockCheckDetails.getProductId());
             stock.setQuantity(new BigDecimal(stockCheckDetails.getCheckQuantity()));
-
-            stockService.ModifyInventory(null,5, Collections.singletonList(stock),stockCheckDto.getWarehouseId());
+            inOutBoList.add(stock);
         }
+        //操作库存
+        stockService.changeStockComm(inOutBoList, StockType.QUANTITY, InOutType.SET, stockCheckDto.getWarehouseId());
     }
 
     @Override

+ 15 - 6
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -1100,7 +1100,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 this.save(oldStock);
             }
 
-            if(ObjectUtil.isEmpty(oldStock.getVictoriatouristJson())){
+            if (ObjectUtil.isEmpty(oldStock.getVictoriatouristJson())) {
                 oldStock.setVictoriatouristJson("{}");
                 this.updateById(oldStock);
             }
@@ -1123,10 +1123,11 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
 
             //操作普通库存
             if (stockType.equals(StockType.QUANTITY)) {
+                String setSql = inOutType != InOutType.SET ? "quantity = quantity %s %s" : "quantity %s %s";
                 boolean update = update(q -> q
                         .eq(Stock::getProductId, inOutBo.getProductId())
                         .eq(Stock::getWarehouseId, warehouseId)
-                        .setSql(String.format("quantity = quantity %s %s", opStr, inOutBo.getQuantity()))
+                        .setSql(String.format(setSql, opStr, inOutBo.getQuantity()))
                         .apply(inOutType.equals(InOutType.OUT), "quantity - {0} >= 0", inOutBo.getQuantity())
                 );
                 if (!update) {
@@ -1140,10 +1141,14 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             }
             //操作冻结库存
             if (stockType.equals(StockType.FROZEN_QUANTITY)) {
+                BigDecimal quantity = inOutBo.getQuantity();
+                String set1 = "victoriatourist_json = JSON_SET(victoriatourist_json,'$.frozenQuantity',IFNULL(json_unquote(victoriatourist_json -> '$.frozenQuantity'), 0) %s %s)";
+                String set2 = "victoriatourist_json = JSON_SET(victoriatourist_json,'$.frozenQuantity',%s)";
+                String setSql = inOutType != InOutType.SET ? String.format(set1, opStr, quantity) : String.format(set2, quantity);
                 boolean update = update(q -> q
                         .eq(Stock::getProductId, inOutBo.getProductId())
                         .eq(Stock::getWarehouseId, warehouseId)
-                        .setSql(String.format("victoriatourist_json = JSON_SET(victoriatourist_json,'$.frozenQuantity',IFNULL(json_unquote(victoriatourist_json -> '$.frozenQuantity'), 0) %s %s)", opStr, inOutBo.getQuantity()))
+                        .setSql(setSql)
                         .apply(inOutType.equals(InOutType.OUT), "IFNULL(json_unquote(victoriatourist_json -> '$.frozenQuantity'), 0) - {0} >= 0", inOutBo.getQuantity())
                 );
                 if (!update) {
@@ -1160,18 +1165,22 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             }
             //操作次品库存
             if (stockType.equals(StockType.DEFECTIVE_QUANTITY)) {
+                BigDecimal quantity = inOutBo.getQuantity();
+                String set1 = "victoriatourist_json = JSON_SET(victoriatourist_json,'$.defectiveQuantity',IFNULL(json_unquote(victoriatourist_json -> '$.defectiveQuantity'), 0) %s %s)";
+                String set2 = "victoriatourist_json = JSON_SET(victoriatourist_json,'$.defectiveQuantity',%s)";
+                String setSql = inOutType != InOutType.SET ? String.format(set1, opStr, quantity) : String.format(set2, quantity);
                 boolean update = update(q -> q
                         .eq(Stock::getProductId, inOutBo.getProductId())
                         .eq(Stock::getWarehouseId, warehouseId)
-                        .setSql(String.format("victoriatourist_json = JSON_SET(victoriatourist_json,'$.defectiveQuantity',IFNULL(json_unquote(victoriatourist_json -> '$.defectiveQuantity'), 0) %s %s)", opStr, inOutBo.getQuantity()))
-                        .apply(inOutType.equals(InOutType.OUT), "IFNULL(json_unquote(victoriatourist_json -> '$.defectiveQuantity'), 0) - {0} >= 0", inOutBo.getQuantity())
+                        .setSql(setSql)
+                        .apply(inOutType.equals(InOutType.OUT), "IFNULL(json_unquote(victoriatourist_json -> '$.defectiveQuantity'), 0) - {0} >= 0", quantity)
                 );
                 if (!update) {
                     if (inOutType.equals(InOutType.OUT)) {
                         String jsonStr = oldStock.getVictoriatouristJson();
                         JSONObject json = ObjectUtil.isEmpty(jsonStr) ? new JSONObject() : JSONObject.parseObject(jsonStr);
 
-                        if (json.getBigDecimal("defectiveQuantity").subtract(inOutBo.getQuantity()).compareTo(BigDecimal.ZERO) < 0) {
+                        if (json.getBigDecimal("defectiveQuantity").subtract(quantity).compareTo(BigDecimal.ZERO) < 0) {
                             throw new ServiceException("产品次品库存不足无法出库:", productInfo.getName());
                         }
                     }