xian 5 vuotta sitten
vanhempi
commit
c475806a62

+ 22 - 21
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -19,6 +19,7 @@ import com.iamberry.rst.faces.cm.InventoryService;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.cm.StoreInfoService;
 import com.iamberry.rst.faces.order.EfastOrderService;
+import com.iamberry.rst.faces.order.OrderBatchService;
 import com.iamberry.rst.faces.order.OrderWarehouseService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
@@ -31,6 +32,7 @@ import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
 import com.iamberry.rst.util.PageUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
+import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.slf4j.Logger;
@@ -83,6 +85,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     private InventoryService inventoryService;
     @Autowired
     private SupplierProductMapper supplierProductMapper;
+    @Autowired
+    private OrderBatchService orderBatchService;
 
     /**
      * 缓存订单项的前缀
@@ -116,14 +120,14 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
-    @Transactional(rollbackFor = {SQLException.class, RuntimeException.class})
+    @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
     public Integer updateSalesOrder(SalesOrder salesOrder) {
         Integer res = salesOrderMapper.updateSalesOrder(salesOrder);
         if (res == null || res <= 0) {
             return 0;
         }
 
-        //确认订单需要填入产品成本价格
+        // 确认订单需要填入产品成本价格
         if(salesOrder.getSalesStatus() != null && salesOrder.getSalesStatus() == 1){
             SalesOrderItem salesOrderItem = new SalesOrderItem();
             salesOrderItem.setItemOrderId(salesOrder.getSalesId());
@@ -166,13 +170,14 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
-    @Transactional(rollbackFor = {SQLException.class, Exception.class}, isolation = Isolation.REPEATABLE_READ)
+    @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
     public Integer updateOrderInfo(SalesOrder salesOrder) {
         int flag = 0;
         if(salesOrder.getSalesId()==null){
             throw new RuntimeException("订单ID不存在!");
         }
         // 处理订单项
+        Date nowTime = new Date();
         for (SalesOrderItem addItem:salesOrder.getSalesOrderItemList()) {
             if(addItem.getItemNum() > 0 && addItem.getItemColorId() > 0){
                 ProductColor productColor = productService.getProduceColor(addItem.getItemColorId());
@@ -187,7 +192,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 addItem.setItemProductPic(productColor.getColorPicture());
                 addItem.setItemProductColor(productColor.getColorName());
                 addItem.setItemColorBar(productColor.getColorBar());
-                addItem.setItemCreateTime(new Date());
+                addItem.setItemCreateTime(nowTime);
                 addItem.setItemIsSource(1);
                 addItem.setItemOrderId(salesOrder.getSalesId());
                 //成本价
@@ -198,16 +203,17 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 }else{
                     throw  new RuntimeException("确认订单失败-未查询到该产品("+ addItem.getItemProductName() +"-"+ addItem.getItemProductColor() +")的成本价格");
                 }
-            }else{
-                throw new RuntimeException("添加订单项失败-获取产品失败!");
+            } else {
+                throw new RuntimeException("添加订单项失败(订单产品不能为空)!");
             }
         }
 
+        // 处理订单项,如果是新增的就新增,如果是原有的,则修改,否则删除
         SalesOrderItem soi = new SalesOrderItem();
         soi.setItemOrderId(salesOrder.getSalesId());
         List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(soi);
         List<SalesOrderItem> updateSalesOrderItemList = new ArrayList<>();
-        List<SalesOrderItem>deleteSalesOrderItemList = new ArrayList<>();
+        List<SalesOrderItem> deleteSalesOrderItemList = new ArrayList<>();
 
         for (SalesOrderItem oldSoi:salesOrderItemList) {
             boolean isHave = false;
@@ -230,10 +236,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             }
         }
 
-        //删除订单项
+        // 删除订单项
         for (SalesOrderItem deleteId:deleteSalesOrderItemList) {
-            flag = salesOrderMapper.delOrderItemByItemId(deleteId.getItemId());
-            if (flag <= 0) {
+            if (salesOrderMapper.delOrderItemByItemId(deleteId.getItemId()) <= 0) {
                 throw new RuntimeException("修改订单失败!");
             }
         }
@@ -242,22 +247,20 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         calculationTotal(salesOrder,salesOrder.getSalesOrderItemList());
 
         //修改订单
-        flag = salesOrderMapper.updateSalesOrder(salesOrder);
-        if (flag <= 0) {
+        if (salesOrderMapper.updateSalesOrder(salesOrder) <= 0) {
             throw new RuntimeException("修改订单失败!");
         }
 
-        //批量修改订单
+        // 批量修改订单
         if(updateSalesOrderItemList.size() > 0) {
             for (SalesOrderItem salesOrderItem : updateSalesOrderItemList) {
                 flag = salesOrderMapper.updateOrderItemObj(salesOrderItem);
             }
         }
 
-        //批量添加订单项数据
+        // 批量添加订单项数据
         if(salesOrder.getSalesOrderItemList() != null && salesOrder.getSalesOrderItemList().size() > 0){
-            flag = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
-            if (flag <= 0) {
+            if (salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList()) <= 0) {
                 throw new RuntimeException("增加订单项失败!");
             }
         }
@@ -505,7 +508,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
 
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = {Exception.class, SQLException.class}, isolation = Isolation.REPEATABLE_READ)
     public boolean addRstOrderAndIteminfo(SalesOrder salesOrder){
         //总支付金额
         Integer salesPayMoney = 0;
@@ -620,21 +623,19 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
-    @Transactional(rollbackFor = {SQLException.class, Exception.class}, isolation = Isolation.REPEATABLE_READ)
+    @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
     public boolean addRstOrderinfo(SalesOrder mainOrder,List<SalesOrder> listSalesOrder,String[] detectIds) {
         // 查询交易号的数量(注意,此处可能重复,应该增加唯一索引)
         Integer flag = salesOrderMapper.getOrderBySalesDealCodeNum(mainOrder.getSalesDealCode());
         if(flag > 0){
             throw new RuntimeException("交易号("+ mainOrder.getSalesDealCode() +")重复,请重新生成交易号!");
         }
-
         if(mainOrder.getSalesAddressPostcode() == null){
             throw new RuntimeException("未获取到邮政编码信息,请检查地址信息!");
         }
-
         if(mainOrder.getSalesCreateTime() == null){
             /*保证时间与以前一样*/
-            mainOrder.setSalesCreateTime(new Date());
+            mainOrder.setSalesCreateTime(mainOrder.getSalesOrderItemList().get(0).getItemCreateTime());
         }
         // 计算金额
         calculationTotal(mainOrder,mainOrder.getSalesOrderItemList());

+ 1 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/sms/SmsServiceImpl.java

@@ -88,12 +88,11 @@ public class SmsServiceImpl implements SmsService {
      * @param text	短信内容
      * @return
      */
+    @Override
     public String sendOtherCMS(String phone, String text) {
         String results = sendSms(text,phone);
-        //logger.info("向手机:" + phone + ",推送确认短信:" + text + ",返回结果-->>" + results);
         JSONObject json =  JSONObject.fromObject(results);
         String resultcod  = json.get("code").toString();
-        System.out.println("短信返回值:"+json);
         if("0".equals(resultcod)){
             return "SUCCESS";
         }else{

+ 15 - 19
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderBatchController.java

@@ -12,6 +12,8 @@ import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -32,7 +34,7 @@ public class AdminOrderBatchController {
     private SalesOrderService salesOrderService;
     @Autowired
     private LogisticsInfoService logisticsInfoService;
-
+    private static final Logger LOGGER = LoggerFactory.getLogger(AdminOrderBatchController.class);
     /**
      * 批次列表
      * @param request
@@ -113,7 +115,7 @@ public class AdminOrderBatchController {
         String ids = "";
         Integer flag = 0;
         for (SalesOrder so:salesOrderList) {
-            if(so.getSalesStatus() == 1 && so.getSalesShippingStatus() == 0){  //salesStatus
+            if(so.getSalesStatus() == 1 && so.getSalesShippingStatus() == 0){
                 SalesOrder newOrder = new SalesOrder();
                 newOrder.setSalesId(so.getSalesId());
                 newOrder.setSalesOrderId(so.getSalesDealCode());
@@ -146,31 +148,25 @@ public class AdminOrderBatchController {
     @RequiresPermissions("salesOrder:confirm:salesOrder")
     @RequestMapping("/list_SalesPostFirm")
     public ResponseJson listSalesPostFirm(HttpServletRequest request, SalesOrder salesOrder) {
-        ResponseJson rj = ResponseJson.getFAILURE();
-        if(salesOrder == null){
-            return rj;
+        // FIXME : 修改方法不应该为list
+        if(salesOrder == null || salesOrder.getSalesPostFirm() == null){
+            return ResponseJson.getFAILURE();
         }
-        if(salesOrder.getSalesPostFirm() == null){
-            return rj;
-        }
-        /*分配到该批次下的所有订单*/
-        Integer flag = 0;
+        /* 分配到该批次下的所有订单 */
         try{
+            int flag = 0;
             if(salesOrder.getSalesBatchId() != null && !salesOrder.getSalesBatchId().equals("")){
+                // 修改批次
                 flag = salesOrderService.listSalesPostFirm(salesOrder);
             }else if(salesOrder.getSalesIds() != null && salesOrder.getSalesIds().length > 0){
-            flag = salesOrderService.listSalesPostFirmByIds(salesOrder);
+                // 修改单个订单
+                flag = salesOrderService.listSalesPostFirmByIds(salesOrder);
             }
+            return flag <= 0 ? ResponseJson.getFAILURE() : ResponseJson.getSUCCESS();
         }catch (Exception e){
-            e.printStackTrace();
-        }
-        if(flag < 1){
-            return rj;
-        }else{
-            rj = ResponseJson.getSUCCESS();
-            return rj;
+            LOGGER.error("", e);
+            return ResponseJson.getFAILURE().addResponseKeyValue("error", e.getMessage());
         }
-
     }
 
     /**

+ 41 - 53
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -26,6 +26,7 @@ import com.iamberry.rst.faces.order.OrderWarehouseService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.utils.*;
+import com.iamberry.wechat.tools.DateTimeUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.UUIDGenerator;
 import net.sf.json.JSONArray;
@@ -214,6 +215,7 @@ public class AdminSalesOrderController {
         SalesOrder order = new SalesOrder();
         order.setSalesId(Integer.parseInt(salesId));
         //根据id查询订单数据
+        // FIXME 获取单个对象的查询,应该用get,不要用list开头标记
         List<SalesOrder> orderList = salesOrderService.listSalesOrder(order);
         if (orderList == null || orderList.size() == 0) {
             return mv;
@@ -777,7 +779,7 @@ public class AdminSalesOrderController {
     @RequestMapping("/add_salesOrder")
     @RequiresPermissions("salesOrder:add:manual")
     public ResponseJson addSalesOrder(HttpServletRequest request, SalesOrder salesOrder, String orderItemString) throws Exception {
-
+        ResponseJson rj = new ResponseJson();
         if(salesOrder.getSalesStoreId() == null){
             return  new ResponseJson(500, "添加订单失败,失败原因:未选择店铺", 500);
         }
@@ -786,20 +788,19 @@ public class AdminSalesOrderController {
         }
         //获取选中的售后维修记录
         String[] detectIds = request.getParameterValues("detectId");
-
+        // 登陆的用户
         Admin admin = AdminUtils.getLoginAdmin();
-        ResponseJson rj = new ResponseJson();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String salesPayTime = request.getParameter("payTime");
-        salesOrder.setSalesPayTime(sdf.parse(salesPayTime));
+        // 解析支付时间
+        salesOrder.setSalesPayTime(DateTimeUtil.parse(request.getParameter("payTime"), "yyyy-MM-dd HH:mm:ss"));
         JSONArray jsonArray = JSONArray.fromObject(orderItemString);
         List<SalesOrderItem> salesOrderItemList = (List<SalesOrderItem>) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
         // 补充产品信息
+        Date nowTime = new Date();
         for (SalesOrderItem salesOrderItem:salesOrderItemList) {
             if(salesOrderItem.getItemNum() > 0 && salesOrderItem.getItemColorId() > 0){
                 ProductColor productColor = productService.getProduceColor(salesOrderItem.getItemColorId());
                 if(productColor == null){
-                    return  new ResponseJson(500, "商品不存在", 500);
+                    return new ResponseJson(500, "商品不存在", 500);
                 }
                 // 补充订单项所需的产品信息
                 salesOrderItem.setItemProductId(productColor.getColorProductId());
@@ -809,10 +810,10 @@ public class AdminSalesOrderController {
                 salesOrderItem.setItemProductPic(productColor.getColorPicture());
                 salesOrderItem.setItemProductColor(productColor.getColorName());
                 salesOrderItem.setItemColorBar(productColor.getColorBar());
-                salesOrderItem.setItemCreateTime(new Date());
+                salesOrderItem.setItemCreateTime(nowTime);
                 salesOrderItem.setItemIsSource(1);
             }else{
-                return  new ResponseJson(500, "添加商品错误", 500);
+                return new ResponseJson(500, "添加商品错误", 500);
             }
         }
         // 交易号
@@ -827,12 +828,11 @@ public class AdminSalesOrderController {
         /*
          * 开始组装订单数据
          */
-        //订单号
         salesOrder.setSalesOrderId(salesOrder.getSalesDealCode());
         salesOrder.setSalesOpenId("0");
         salesOrder.setSalesPledgeMoney(0);
         salesOrder.setSalesRemainDeposit(0);
-        salesOrder.setSalesCreateTime(new Date());
+        salesOrder.setSalesCreateTime(nowTime);
         salesOrder.setSalesType(1);
         salesOrder.setSalesPayStatus(2);
         salesOrder.setSalesProcessStatus(0);
@@ -846,35 +846,34 @@ public class AdminSalesOrderController {
         salesOrder.setSalesOrderStatus(1);
         //发货状态 0(未发货
         salesOrder.setSalesShippingStatus(0);
-        //是否通知配货    0:否1:是
+        // 是否通知配货    0:否1:是
         salesOrder.setSalesIsSend(0);
         // 1 未下载
         salesOrder.setSalesIsDownload(1);
-        //手动添加
+        // 手动添加
         salesOrder.setSalesAddType(1);
         //admin id
         salesOrder.setSalesAdminId(admin.getAdminId());
         salesOrder.setSalesOrderItemList(salesOrderItemList);
-        if(salesOrder.getSalesBatchId() == null || "".equals(salesOrder.getSalesBatchId()) || "1".equals(salesOrder.getSalesBatchId())){
-            // 用户新建批次,系统自动新建
-            String batchId = generateKeyUtil.getSalesBatchIdSD();
-            OrderBatch ob = new OrderBatch();
-            ob.setBatchId(batchId);
-            ob.setBatchStatus(1);
-            Integer flag = orderBatchService.save(ob);
-            if(flag < 1){
-                return  new ResponseJson(500, "创建批次失败", 500);
-            }
-            salesOrder.setSalesBatchId(batchId);
-        }
         try {
             // 添加订单
+            if(salesOrder.getSalesBatchId() == null || "".equals(salesOrder.getSalesBatchId()) || "1".equals(salesOrder.getSalesBatchId())){
+                // 用户新建批次,系统自动新建
+                String batchId = generateKeyUtil.getSalesBatchIdSD();
+                OrderBatch ob = new OrderBatch();
+                ob.setBatchId(batchId);
+                ob.setBatchStatus(1);
+                if(orderBatchService.save(ob) < 1){
+                    throw new RuntimeException("创建订单批次失败");
+                }
+                salesOrder.setSalesBatchId(batchId);
+            }
             salesOrderService.addRstOrderinfo(salesOrder,new ArrayList<SalesOrder>(),detectIds);
-            return new ResponseJson(200, "添加订单成功,订单交易号为:"+ salesOrder.getSalesDealCode(), 200);
-        }catch (Exception e){
+        } catch (Exception e){
             logger.error("", e);
-            return  new ResponseJson(500, "添加订单失败,失败原因:"+e.getMessage(), 500);
+            return new ResponseJson(500, "添加订单失败,失败原因:"+e.getMessage(), 500);
         }
+        return new ResponseJson(200, "添加订单成功,订单交易号为:"+ salesOrder.getSalesDealCode(), 200);
     }
 
     /**
@@ -963,17 +962,16 @@ public class AdminSalesOrderController {
     @RequiresPermissions("salesOrder:add:manual")
     public ResponseJson updateSalesOrder(HttpServletRequest request,
                                       SalesOrder salesOrder,
-                                      String orderItemString
-    ) throws Exception {
-
+                                      String orderItemString) throws Exception {
+        // 检车订单的手机号码
         if(salesOrder.getSalesAddressTel() != null && !"".equals(salesOrder.getSalesAddressTel())){
             salesOrder.setSalesAddressTel(salesOrder.getSalesAddressTel().trim());
         }
-
+        // 转换订单项
         JSONArray jsonArray = JSONArray.fromObject(orderItemString);
-        List salesOrderItemList = ((List)JSONArray.toCollection(jsonArray, SalesOrderItem.class));
+        List<SalesOrderItem> salesOrderItemList = ((List<SalesOrderItem>)JSONArray.toCollection(jsonArray, SalesOrderItem.class));
         salesOrder.setSalesOrderItemList(salesOrderItemList);
-
+        // 订单批次??修改为什么要生成订单批次
         if(salesOrder.getSalesBatchId() == null || "1".equals(salesOrder.getSalesBatchId())){
             String batchId = generateKeyUtil.getSalesBatchIdSD();
             OrderBatch ob = new OrderBatch();
@@ -985,20 +983,14 @@ public class AdminSalesOrderController {
             }
             salesOrder.setSalesBatchId(batchId);
         }
-        Integer bl = 0;
-        String errorMsg = "";
+        // 修改订单
         try {
-            bl = salesOrderService.updateOrderInfo(salesOrder);
+            salesOrderService.updateOrderInfo(salesOrder);
         }catch (Exception e){
-            errorMsg = e.getMessage();
-            e.printStackTrace();
-            return  new ResponseJson(500, "修改订单失败,失败原因:"+errorMsg, 500);
-        }
-        if(bl > 0){
-            return new ResponseJson(200, "修改订单成功,订单交易号为:"+ salesOrder.getSalesDealCode(), 200);
-        }else{
-            return  new ResponseJson(500, "修改订单失败,失败原因:"+errorMsg, 500);
+            logger.error("", e);
+            return new ResponseJson(500, "修改订单失败,失败原因:"+e.getMessage(), 500);
         }
+        return new ResponseJson(200, "修改订单成功,订单交易号为:"+ salesOrder.getSalesDealCode(), 200);
     }
 
     /**
@@ -1899,12 +1891,12 @@ public class AdminSalesOrderController {
             return new ResponseJson(500, "未获取到参数!", 500);
         }
         //查询签名
-        List<SmsSignatureInfo>  listEmsSignatureInfo = salesOrderService.listSmsSignatureInfo(smsSignatureInfo);
-        StringBuffer text = new StringBuffer(listEmsSignatureInfo.get(0).getSmsSignatureInfo());
+        List<SmsSignatureInfo> listEmsSignatureInfo = salesOrderService.listSmsSignatureInfo(smsSignatureInfo);
+        // 拼装短信内容
+        StringBuilder text = new StringBuilder(listEmsSignatureInfo.get(0).getSmsSignatureInfo());
         text.append(smsTemplateInfo.getSmsTemplateInfo());
         logger.info("给 " + phone + " 手机用户发送售后短信:" + text);
         String result = smsService.sendOtherCMS(phone.trim(), text.toString());
-
         if ("SUCCESS".equals(result)) {
             return new ResponseJson(200, "发送短信成功!", 200);
         } else {
@@ -1919,8 +1911,7 @@ public class AdminSalesOrderController {
      */
     @RequestMapping("/to_adminDetectOrder")
     public ModelAndView to_adminDetectOrder(HttpServletRequest request){
-        ModelAndView mv = new ModelAndView("order/salesOrder/delete_order");
-        return mv;
+        return new ModelAndView("order/salesOrder/delete_order");
     }
 
 
@@ -1963,9 +1954,6 @@ public class AdminSalesOrderController {
 
         }
         return new ResponseJson(200, ret1+"-----"+ret2, 200);
-
-            /*return new ResponseJson(500, "发送短信失败,失败原因:" + result, 500);*/
-
     }
 
     /**

+ 5 - 15
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -553,28 +553,18 @@ public class AwaitSendController {
     @RequiresPermissions("salesOrder:send:salesOrder")
     @RequestMapping("/manual_delivery")
     public ResponseJson listSalesPostFirm(HttpServletRequest request, SalesOrder salesOrder) {
-        ResponseJson rj = ResponseJson.getFAILURE();
-        if(salesOrder == null){
-            return rj;
-        }
-        if(salesOrder.getSalesPostNum() == null || salesOrder.getSalesId() == null){
-            return rj;
+        if(salesOrder == null || salesOrder.getSalesPostNum() == null || salesOrder.getSalesId() == null){
+            return ResponseJson.getFAILURE();
         }
+        // 组装订单数据
         salesOrder.setSalesSendTime(new Date());
         salesOrder.setSalesShippingStatus(1);
         salesOrder.setSalesSendType(2);
         /*分配到该批次下的所有订单*/
-        Integer flag = 0;
         try{
-            flag = salesOrderService.updateSalesOrder(salesOrder);
+            return salesOrderService.updateSalesOrder(salesOrder) <= 0 ? ResponseJson.getFAILURE() : ResponseJson.getSUCCESS();
         }catch (Exception e){
-            e.printStackTrace();
-        }
-        if(flag < 0){
-            return rj;
-        }else{
-            rj = ResponseJson.getSUCCESS();
-            return rj;
+            return ResponseJson.getFAILURE().addResponseKeyValue("error", e.getMessage());
         }
     }