Просмотр исходного кода

后天设置用户密码,聚水潭对接

wangxy 2 дней назад
Родитель
Сommit
0a8e5896bc
17 измененных файлов с 525 добавлено и 27 удалено
  1. 1 1
      fs-admin/src/main/java/com/fs/his/controller/FsUserController.java
  2. 1 1
      fs-admin/src/main/java/com/fs/his/task/Task.java
  3. 2 0
      fs-service/src/main/java/com/fs/erp/service/IErpOrderService.java
  4. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/DfOrderServiceImpl.java
  5. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java
  6. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/HzOMSErpOrderServiceImpl.java
  7. 209 17
      fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java
  8. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/K9OrderScrmServiceImpl.java
  9. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java
  10. 7 0
      fs-service/src/main/java/com/fs/his/mapper/FsStoreOrderItemMapper.java
  11. 1 0
      fs-service/src/main/java/com/fs/his/service/IFsStoreOrderItemService.java
  12. 5 0
      fs-service/src/main/java/com/fs/his/service/IFsStoreOrderService.java
  13. 6 3
      fs-service/src/main/java/com/fs/his/service/impl/FsIntegralOrderServiceImpl.java
  14. 5 0
      fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderItemServiceImpl.java
  15. 229 2
      fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java
  16. 33 2
      fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java
  17. 1 1
      fs-service/src/main/java/com/fs/store/vo/h5/FsUserPageListExportVO.java

+ 1 - 1
fs-admin/src/main/java/com/fs/his/controller/FsUserController.java

@@ -330,7 +330,7 @@ public class FsUserController extends BaseController
      * 修改用户
      */
     @PreAuthorize("@ss.hasPermi('his:user:edit')")
-    @Log(title = "用户", businessType = BusinessType.UPDATE)
+    @Log(title = "用户账户修改及密码", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody FsUser fsUser)
     {

+ 1 - 1
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -780,7 +780,7 @@ public class Task {
             o_ids.add(Long.parseLong(fsIntegralOrder.getExtendOrderId()));
         }
         if (!CollectionUtils.isEmpty(o_ids)){
-//            jstErpIntegralOrderDelivery(o_ids);
+            jstErpIntegralOrderDelivery(o_ids);
         }
     }
 

+ 2 - 0
fs-service/src/main/java/com/fs/erp/service/IErpOrderService.java

@@ -18,6 +18,8 @@ public interface IErpOrderService
 
     ErpOrderResponse addLiveOrder(ErpOrder order);
 
+    ErpOrderResponse batchAddOrder(List<ErpOrder> orders) throws InterruptedException;
+
     //用户发起退款,然后后台审核通过后,提交退款单
     ErpOrderResponse refundOrder(ErpRefundOrder order);
     ErpOrderResponse refundOrderScrm(ErpRefundOrder order);

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/DfOrderServiceImpl.java

@@ -184,6 +184,11 @@ public class DfOrderServiceImpl implements IErpOrderService {
         return getLiveErpOrderResponse(order);
     }
 
+    @Override
+    public ErpOrderResponse batchAddOrder(List<ErpOrder> orders) throws InterruptedException {
+        return null;
+    }
+
     private ErpOrderResponse getLiveErpOrderResponse(ErpOrder order) {
         LiveOrder liveOrder = liveOrderMapper.selectLiveOrderByOrderCode(order.getPlatform_code());
         if (liveOrder == null) {

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java

@@ -76,6 +76,11 @@ public class ErpOrderServiceImpl implements IErpOrderService
         return addOrder(order);
     }
 
+    @Override
+    public ErpOrderResponse batchAddOrder(List<ErpOrder> orders) throws InterruptedException {
+        return null;
+    }
+
     @Override
     public ErpOrderResponse refundOrder(ErpRefundOrder order) {
         FsSysConfig sysConfig = configUtil.getSysConfig();

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/HzOMSErpOrderServiceImpl.java

@@ -104,6 +104,11 @@ public class HzOMSErpOrderServiceImpl implements IErpOrderService {
         return null;
     }
 
+    @Override
+    public ErpOrderResponse batchAddOrder(List<ErpOrder> orders) throws InterruptedException {
+        return null;
+    }
+
     private JSONObject buildHzOMSOrderLive(String orderCode) {
         //通过订单号查询更多订单信息
         LiveOrder liveOrder = liveOrderMapper.selectLiveOrderByOrderCode(orderCode);

+ 209 - 17
fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -3,6 +3,7 @@ package com.fs.erp.service.impl;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.fs.common.core.redis.RedisCache;
@@ -499,6 +500,193 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
         return erpOrderResponse;
     }
 
+    @Override
+    public ErpOrderResponse batchAddOrder(List<ErpOrder> orders) throws InterruptedException {
+        List<ShopOrderDTO> normalOrders = new ArrayList<>();  // 普通订单
+        List<ShopOrderDTO> codOrders = new ArrayList<>();     // 货到付款订单
+
+        ErpOrderResponseDTO upload = new ErpOrderResponseDTO();
+
+        for (ErpOrder order : orders) {
+            FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
+            if (ObjectUtil.isNull(fsStoreOrder)) {
+                fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(order.getParent_code());
+            }
+            log.info("ERP订单号: {}, 订单信息: {}",order.getPlatform_code(), JSON.toJSONString(fsStoreOrder));
+            if(!CollectionUtils.isEmpty(order.getPayments())){
+                ErpOrderPayment erpOrderPayment = order.getPayments().get(0);
+            }
+
+            ShopOrderDTO shopOrderDTO = new ShopOrderDTO();
+
+            shopOrderDTO.setShopId(Long.valueOf(order.getShop_code()));
+            shopOrderDTO.setSoId(order.getPlatform_code());
+            shopOrderDTO.setOrderDate(order.getDeal_datetime());
+            shopOrderDTO.setShopStatus(OrderStatusEnum.WAIT_SELLER_SEND_GOODS.name());
+            shopOrderDTO.setShopBuyerId(order.getBuyer_account());
+            shopOrderDTO.setReceiverState(order.getReceiver_province());
+            shopOrderDTO.setReceiverCity(order.getReceiver_city());
+            shopOrderDTO.setReceiverDistrict(order.getReceiver_district());
+            shopOrderDTO.setReceiverAddress(order.getReceiver_address());
+            shopOrderDTO.setReceiverName(order.getReceiver_name());
+            shopOrderDTO.setReceiverPhone(order.getReceiver_mobile());
+            shopOrderDTO.setPayAmount(fsStoreOrder.getPayPrice().doubleValue());
+            shopOrderDTO.setRemark(order.getRemark());
+            if (ObjectUtil.isNull(fsStoreOrder.getPayDelivery())) {
+                shopOrderDTO.setFreight(Double.valueOf("0.00"));
+            } else {
+                shopOrderDTO.setFreight(fsStoreOrder.getPayDelivery().doubleValue());
+            }
+            shopOrderDTO.setBuyerMessage(order.getBuyer_memo());
+
+            // 订单商品项列表
+            List<OrderItemDTO> itemDTOList = new ArrayList<>();
+            List<FsStoreOrderItem> fsStoreOrderItemVOS = new ArrayList<>();
+            if (StringUtils.isNotEmpty(fsStoreOrder.getExtendOrderId())&&fsStoreOrder.getExtendOrderId().equals("BATCH")){
+                fsStoreOrderItemVOS = fsStoreOrderItemService.selectFsStoreOrderItemListByOrderCode(order.getPlatform_code());
+            }else {
+                fsStoreOrderItemVOS = fsStoreOrderItemService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getOrderId());
+            }
+
+            for (FsStoreOrderItem item : fsStoreOrderItemVOS) {
+                OrderItemDTO orderItemDTO = new OrderItemDTO();
+                JSONObject jsonObject = JSON.parseObject(item.getJsonInfo());
+                String barCode = jsonObject.getString("barCode");
+                String productName = jsonObject.getString("productName");
+                String sku=jsonObject.getString("sku");
+
+                orderItemDTO.setSkuId(barCode);
+                orderItemDTO.setShopSkuId(barCode);
+                orderItemDTO.setName(productName);
+                orderItemDTO.setShopIId(orderItemDTO.getSkuId());
+                orderItemDTO.setPropertiesValue(sku);
+                FsStoreProduct fsStoreProduct = fsStoreProductService.selectFsStoreProductById(item.getProductId());
+                orderItemDTO.setAmount(fsStoreProduct.getPrice().multiply(new BigDecimal(item.getNum())));
+                orderItemDTO.setPic(fsStoreProduct.getImgUrl());
+                orderItemDTO.setPrice(fsStoreProduct.getPrice());
+                orderItemDTO.setQty(item.getNum().intValue());
+                orderItemDTO.setOuterOiId(String.format("%s%s",fsStoreOrder.getOrderCode(),item.getItemId()));
+                itemDTOList.add(orderItemDTO);
+            }
+            shopOrderDTO.setItems(itemDTOList);
+
+            // 实际支付金额
+            PaymentDTO paymentDTO = new PaymentDTO();
+            paymentDTO.setAmount(fsStoreOrder.getPayMoney().doubleValue());
+            paymentDTO.setOuterPayId(order.getPlatform_code());
+            paymentDTO.setPayDate(order.getDeal_datetime());
+            paymentDTO.setPayment("微信支付");
+            paymentDTO.setBuyerAccount(order.getBuyer_account());
+            paymentDTO.setSellerAccount("平台销售");
+            shopOrderDTO.setPay(paymentDTO);
+            if (order.getOrderNum()>1){
+                shopOrderDTO.setPayAmount(0.00);
+                shopOrderDTO.setPay(null);
+            }
+
+            // 添加普通订单
+            normalOrders.add(shopOrderDTO);
+
+            // 如果是货到付款,创建第二个订单
+            if(fsStoreOrder.getPayType() == 2 || fsStoreOrder.getPayType() == 3){
+                ShopOrderDTO codOrderDTO = JSON.parseObject(JSON.toJSONString(shopOrderDTO), ShopOrderDTO.class);
+                codOrderDTO.setIsCod(true);
+                // 应付金额(货到付款= 订单总金额 - 已付金额)
+                codOrderDTO.setPayAmount(fsStoreOrder.getPayPrice().doubleValue());
+
+                // 货到付款支付信息
+                PaymentDTO paymentDTO2 = new PaymentDTO();
+                // 物流代收金额
+                paymentDTO2.setAmount(fsStoreOrder.getPayRemain().doubleValue());
+                paymentDTO2.setOuterPayId(String.format("%s%d",order.getPlatform_code(),1));
+                paymentDTO2.setPayDate(order.getDeal_datetime());
+                paymentDTO2.setPayment("货到付款");
+                paymentDTO2.setBuyerAccount(order.getBuyer_account());
+                paymentDTO2.setSellerAccount("平台销售");
+                codOrderDTO.setPay(paymentDTO2);
+
+                FsJstCodPush fsJstCodPush = new FsJstCodPush();
+                fsJstCodPush.setOrderId(fsStoreOrder.getOrderCode());
+                fsJstCodPush.setType("0");
+                fsJstCodPush.setParams(JSON.toJSONString(codOrderDTO));
+                fsJstCodPush.setRetryCount(0);
+                fsJstCodPush.setTaskStatus(TaskStatusEnum.PENDING.getCode());
+                fsJstCodPushMapper.insert(fsJstCodPush);
+
+                if (order.getOrderNum()>1){
+                    codOrderDTO.setPayAmount(0.00);
+                    codOrderDTO.setPay(null);
+                }
+                // 添加货到付款订单
+                codOrders.add(codOrderDTO);
+            }
+
+        }
+
+        // 批量推送普通订单(每50条一批)
+        int batchSize = 50;  // 修正为50
+        ErpOrderResponseDTO lastResponse = null;
+
+        // 推送普通订单
+        for (int i = 0; i < normalOrders.size(); i += batchSize) {
+            int endIndex = Math.min(i + batchSize, normalOrders.size());
+            List<ShopOrderDTO> batch = new ArrayList<>(normalOrders.subList(i, endIndex));
+            lastResponse = jstErpHttpService.batchUpload(batch);
+            List<ErpOrderResponseDTO.OrderData> datas = lastResponse.getDatas();
+            for (ErpOrderResponseDTO.OrderData data : datas) {
+                if (data!=null&&data.getIssuccess()) {
+                    FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(data.getSoId());
+                    //普通订单
+                    if (fsStoreOrder!=null&&StringUtils.isEmpty(fsStoreOrder.getExtendOrderId())){
+                        //支付成功后 将订单号写入待发货的REDIS中
+                        redisCache.setCacheObject("delivery" + ":" + data.getOId(), fsStoreOrder.getOrderCode());
+                        //写入外部订单号
+                        fsStoreOrder.setExtendOrderId(data.getOId().toString());
+                        fsStoreOrderService.updateFsStoreOrder(fsStoreOrder);
+                    }else if (fsStoreOrder!=null&&fsStoreOrder.getExtendOrderId().equals("BATCH")){
+                        //分批订单
+                        FsStoreOrderItem oneItem = fsStoreOrderItemMapper.selectFsStoreOrderItemByOrderCode(data.getSoId());
+                        redisCache.setCacheObject("delivery" + ":" + data.getOId(), oneItem.getOrderCode());
+                        //写入外部订单号
+                        oneItem.setExtendOrderId(data.getOId().toString());
+                        fsStoreOrderItemMapper.updateFsStoreOrderItemBatch(oneItem);
+                    }
+                }
+            }
+            log.info("批量推送普通订单,数量: {}", batch.size());
+            Thread.sleep(600);
+        }
+
+        // 推送货到付款订单
+        for (int i = 0; i < codOrders.size(); i += batchSize) {
+            int endIndex = Math.min(i + batchSize, codOrders.size());
+            List<ShopOrderDTO> batch = new ArrayList<>(codOrders.subList(i, endIndex));
+            jstErpHttpService.batchUpload(batch);
+            log.info("批量推送货到付款订单,数量: {}", batch.size());
+        }
+
+        // 返回最后一次推送的结果
+        if (lastResponse != null && CollectionUtils.isEmpty(lastResponse.getDatas())) {
+            log.info("推送ERP返回结果: {}", lastResponse);
+            throw new IllegalArgumentException("推送ERP返回数不应该为0");
+        }
+
+        // 如果没有任何订单推送,创建一个默认响应
+        if (lastResponse == null) {
+            lastResponse = new ErpOrderResponseDTO();
+            ErpOrderResponseDTO.OrderData data = new ErpOrderResponseDTO.OrderData();
+            data.setOId(0);
+            lastResponse.setDatas(Collections.singletonList(data));
+        }
+
+        ErpOrderResponseDTO.OrderData orderData = lastResponse.getDatas().get(0);
+
+        ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+        erpOrderResponse.setSuccess(true);
+        erpOrderResponse.setCode(String.valueOf(orderData.getOId()));
+        return erpOrderResponse;
+    }
+
     @Override
     public ErpOrderResponse refundOrder(ErpRefundOrder order) {
         return null;
@@ -1109,23 +1297,27 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
             shopOrderDTO.setBuyerMessage(order.getBuyer_memo());
             // 订单商品项列表
             List<OrderItemDTO> itemDTOList = new ArrayList<>();
-            OrderItemDTO orderItemDTO = new OrderItemDTO();
-            JSONObject jsonObject = JSON.parseObject(fsIntegralOrder.getItemJson());
-            String barCode = jsonObject.getString("barCode");
-            String productName = jsonObject.getString("goodsName");
-            //String sku = jsonObject.getString("sku");
-            orderItemDTO.setSkuId(barCode);
-            orderItemDTO.setShopSkuId(barCode);
-            orderItemDTO.setName(productName);
-            orderItemDTO.setShopIId(orderItemDTO.getSkuId());
-            //orderItemDTO.setPropertiesValue(sku);
-            FsIntegralGoods goodsId = fsIntegralGoodsMapper.selectFsIntegralGoodsByGoodsId(Long.parseLong(jsonObject.getString("goodsId")));
-            orderItemDTO.setAmount(new BigDecimal(0));
-            orderItemDTO.setPic(goodsId.getImgUrl());
-            orderItemDTO.setPrice(new BigDecimal(0));
-            orderItemDTO.setQty(1);
-            orderItemDTO.setOuterOiId(String.format("%s", fsIntegralOrder.getOrderCode()));
-            itemDTOList.add(orderItemDTO);
+            Object parsedJson = JSON.parse(fsIntegralOrder.getItemJson());
+            JSONArray jsonArray = (JSONArray) parsedJson;
+            for (int i = 0; i < jsonArray.size(); i++) {
+                OrderItemDTO orderItemDTO = new OrderItemDTO();
+                JSONObject jsonObject = jsonArray.getJSONObject(i);
+                String barCode = jsonObject.getString("barCode");
+                String productName = jsonObject.getString("goodsName");
+                //String sku = jsonObject.getString("sku");
+                orderItemDTO.setSkuId(barCode);
+                orderItemDTO.setShopSkuId(barCode);
+                orderItemDTO.setName(productName);
+                orderItemDTO.setShopIId(orderItemDTO.getSkuId());
+                //orderItemDTO.setPropertiesValue(sku);
+                FsIntegralGoods goodsId = fsIntegralGoodsMapper.selectFsIntegralGoodsByGoodsId(Long.parseLong(jsonObject.getString("goodsId")));
+                orderItemDTO.setAmount(new BigDecimal(0));
+                orderItemDTO.setPic(goodsId.getImgUrl());
+                orderItemDTO.setPrice(new BigDecimal(0));
+                orderItemDTO.setQty(1);
+                orderItemDTO.setOuterOiId(String.format("%s", fsIntegralOrder.getOrderCode()));
+                itemDTOList.add(orderItemDTO);
+             }
             shopOrderDTO.setItems(itemDTOList);
             // 实际支付金额
             PaymentDTO paymentDTO = new PaymentDTO();

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/K9OrderScrmServiceImpl.java

@@ -80,6 +80,11 @@ public class K9OrderScrmServiceImpl implements IErpOrderService {
         return addOmsOrderLive(order.getPlatform_code());
     }
 
+    @Override
+    public ErpOrderResponse batchAddOrder(List<ErpOrder> orders) throws InterruptedException {
+        return null;
+    }
+
     private ErpOrderResponse addOmsOrderLive(String orderCode) {
         try {
             KingbosOrderResponse response = this.createOmsOrderLive(orderCode, NO_DELIVERED.getCode());

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java

@@ -118,6 +118,11 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         return getErpOrderResponseLive(order);
     }
 
+    @Override
+    public ErpOrderResponse batchAddOrder(List<ErpOrder> orders) throws InterruptedException {
+        return null;
+    }
+
     private ErpOrderResponse getErpOrderResponseLive(ErpOrder order) {
         FsSysConfig sysConfig = configUtil.getSysConfig();
         String shopCode = sysConfig.getErpWdShopCode();

+ 7 - 0
fs-service/src/main/java/com/fs/his/mapper/FsStoreOrderItemMapper.java

@@ -82,4 +82,11 @@ public interface FsStoreOrderItemMapper
     @Select(" select * from fs_store_order_item where order_code=#{orderCode} ")
     List<FsStoreOrderItem> getFsStoreOrderItemByOrderCode(@Param("orderCode")String orderCode);
     List<FsStoreOrderItem> selectFsStoreOrderItemListByItemIds(@Param("itemIds") List<Long> itemIds);
+
+    @Select("select * from fs_store_order_item where order_code = #{orderCode}")
+    List<FsStoreOrderItem> selectFsStoreOrderItemListByOrderCode(String orderCode);
+
+    @Select(" select * from fs_store_order_item where order_code=#{orderCode} and extend_order_id is null and expect_delivery_time <= now() ")
+        //@Select(" select * from fs_store_order_item where order_code=#{orderCode} and extend_order_id is null ")
+    List<FsStoreOrderItem> getCreateOmsOrderItemByOrderCode(@Param("orderCode") String orderCode);
 }

+ 1 - 0
fs-service/src/main/java/com/fs/his/service/IFsStoreOrderItemService.java

@@ -67,4 +67,5 @@ public interface IFsStoreOrderItemService
     List<FsStoreOrderItemListDVO> selectFsStoreOrderItemListDVOByOrderId(Long orderId);
 
     List<FsStoreOrderItem> selectFsStoreOrderItemListByOrderId(Long orderId);
+    List<FsStoreOrderItem> selectFsStoreOrderItemListByOrderCode(String orderCode);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/IFsStoreOrderService.java

@@ -307,5 +307,10 @@ public interface IFsStoreOrderService
      */
     void createJSTOmsOrder(List<Long> orderIds) throws Exception;
 
+    /**
+     *聚水潭订单批量
+     */
+    void createJSTOmsOrderBatch(List<Long> orderIdS) throws Exception;
+
     void deliveryOrderItem(String orderCode, String deliveryId, String deliverCode, String deliverName, String itemOrderCode);
 }

+ 6 - 3
fs-service/src/main/java/com/fs/his/service/impl/FsIntegralOrderServiceImpl.java

@@ -892,6 +892,7 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void createOmsIntegralOrder(List<Long> orderIds) throws ParseException, InterruptedException {
         List<ErpOrder> erpOrders = new ArrayList<>();
 
@@ -941,9 +942,11 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
             payments.add(payment);
 
             FsExpress express = expressService.selectFsExpressByOmsCode("YUNDA");
-            erpOrder.setExpress_code(express.getOmsCode());
-            fsIntegralOrder.setDeliveryName(express.getName());
-            fsIntegralOrder.setDeliveryCode(express.getCode());
+            if(express!=null){
+                erpOrder.setExpress_code(express.getOmsCode());
+                fsIntegralOrder.setDeliveryName(express.getName());
+                fsIntegralOrder.setDeliveryCode(express.getCode());
+            }
             erpOrder.setPayments(payments);
 
             BigDecimal bigDecimal = new BigDecimal(0);

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderItemServiceImpl.java

@@ -110,4 +110,9 @@ public class FsStoreOrderItemServiceImpl implements IFsStoreOrderItemService
     public List<FsStoreOrderItem>selectFsStoreOrderItemListByOrderId(Long orderId) {
         return fsStoreOrderItemMapper.selectFsStoreOrderItemListByOrderId(orderId);
     }
+
+    @Override
+    public List<FsStoreOrderItem> selectFsStoreOrderItemListByOrderCode(String orderCode) {
+        return fsStoreOrderItemMapper.selectFsStoreOrderItemListByOrderCode(orderCode);
+    }
 }

+ 229 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -4645,12 +4645,12 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         FsSysConfig sysConfig = configUtil.getSysConfig();
         Integer erpOpen = sysConfig.getErpOpen();
         if (erpOpen == null || erpOpen == 0) {
-            log.info("ERP未开启,跳过同步");
+            log.warn("ERP未开启,跳过同步");
             return;
         }
         Integer erpType = sysConfig.getErpType();
         if (erpType == null || !erpServiceMap.containsKey(erpType)) {
-            log.info("ERP类型配置无效: {}", erpType);
+            log.warn("ERP类型配置无效: {}", erpType);
             return;
         }
         for (Long orderId : orderIds) {
@@ -4674,6 +4674,10 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
 //            erpOrder.setWarehouse_code(order.getStoreHouseCode());
 //        }
 //            FsSysConfig sysConfig = configUtil.getSysConfig();
+            if(order.getStoreId()== null){
+                log.warn("店铺id为空,订单对象:{}", order);
+                return;
+            }
             FsStore fsStore = fsStoreMapper.selectFsStoreByStoreId(order.getStoreId());
             erpOrder.setShop_code(fsStore.getShopCode());
             erpOrder.setSeller_memo(order.getRemark());
@@ -4844,6 +4848,229 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         }
     }
 
+    @Override
+    public void createJSTOmsOrderBatch(List<Long> orderIdS) throws Exception {
+        List<ErpOrder> erpOrders = new ArrayList<>();
+        // 1. 检查 ERP 是否开启
+        FsSysConfig sysConfig = configUtil.getSysConfig();
+        Integer erpOpen = sysConfig.getErpOpen();
+        if (erpOpen == null || erpOpen == 0) {
+            log.warn("ERP未开启,跳过同步");
+            return;
+        }
+        Integer erpType = sysConfig.getErpType();
+        if (erpType == null || !erpServiceMap.containsKey(erpType)) {
+            log.warn("ERP类型配置无效: {}", erpType);
+            return;
+        }
+        for (Long orderId : orderIdS) {
+            FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderByOrderId(orderId);
+            if (order != null && StringUtils.isEmpty(order.getExtendOrderId()) && order.getStatus() != 2) {
+                return;
+            }
+            if (order == null) {
+                return;
+            }
+            ErpOrder erpOrder = new ErpOrder();
+            if (order.getCompanyId() != null) {
+                erpOrder.setVip_code(order.getUserId().toString() + order.getCompanyId().toString());
+            } else {
+                erpOrder.setVip_code(order.getUserId().toString());
+            }
+            erpOrder.setPlatform_code(order.getOrderCode());
+//        if(order.getStoreHouseCode()==null){
+//            erpOrder.setWarehouse_code("CQDS001");
+//        }else{
+//            erpOrder.setWarehouse_code(order.getStoreHouseCode());
+//        }
+            if(order.getStoreId()== null){
+                log.warn("店铺id为空,订单对象:{}", order);
+                return;
+            }
+            FsStore fsStore = fsStoreMapper.selectFsStoreByStoreId(order.getStoreId());
+            erpOrder.setShop_code(fsStore.getShopCode());
+            erpOrder.setSeller_memo(order.getRemark());
+            List<ErpOrderPayment> payments = new ArrayList<>();
+            ErpOrderPayment payment = new ErpOrderPayment();
+            payment.setPay_type_code("weixin");
+            payment.setPayment(order.getPayMoney().doubleValue());
+            erpOrder.setBuyer_account(order.getUserName());
+            erpOrder.setRemark(order.getRemark());
+            if (order.getPayTime() != null) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                String timeString = sdf.format(order.getPayTime());
+                Date date = sdf.parse(timeString); // 时间格式转为时间戳
+                long timeLong = date.getTime();
+                payment.setPaytime(new Timestamp(timeLong));
+            }
+            payments.add(payment);
+
+
+            //物流代收都发 互联网医院顺丰
+            if (order.getPayRemain().compareTo(new BigDecimal(0)) == 0) {
+                //没有物流代收
+                //大于100发发顺丰云配
+                if (order.getPayMoney().compareTo(new BigDecimal(100)) > 0) {
+                    //发互联网医院SF.0235488558_241101
+                    FsExpress express = expressService.selectFsExpressByOmsCode("SF.0235488558_241101");
+                    erpOrder.setExpress_code(express.getOmsCode());
+                    order.setDeliveryName(express.getName());
+                    order.setDeliveryCode(express.getCode());
+                } else {
+                    //发ztpdd
+                    FsExpress express = expressService.selectFsExpressByOmsCode("CDYJFYD.400011111705_241230");
+                    erpOrder.setExpress_code(express.getOmsCode());
+                    order.setDeliveryName(express.getName());
+                    order.setDeliveryCode(express.getCode());
+                }
+            } else {
+                FsExpress express = new FsExpress();
+                if (order.getCompanyId() != null) {
+                    Company company = companyService.selectCompanyById(order.getCompanyId());
+                    if (company != null && StringUtils.isNotEmpty(company.getOmsCode())) {
+                        express = expressService.selectFsExpressByOmsCode(company.getOmsCode());
+                    } else {
+                        express = expressService.selectFsExpressByOmsCode("SF.0235469535");
+                    }
+                } else {
+                    express = expressService.selectFsExpressByOmsCode("SF.0235469535");
+                }
+                //物流代发互联网医院顺
+                erpOrder.setExpress_code(express.getOmsCode());
+                order.setDeliveryName(express.getName());
+                order.setDeliveryCode(express.getCode());
+                //物流代收金额
+                ErpOrderPayment codPayment = new ErpOrderPayment();
+                codPayment.setPay_type_code("cod");
+                BigDecimal toal = order.getPayRemain();
+                codPayment.setPayment(toal.doubleValue());
+                payments.add(codPayment);
+                erpOrder.setCod(true);
+
+            }
+
+            erpOrder.setPayments(payments);
+            if (order.getCompanyId() != null) {
+                Company company = companyService.selectCompanyById(order.getCompanyId());
+                if (company != null) {
+                    erpOrder.setSeller_memo(company.getCompanyName());
+                    erpOrder.setRemark(company.getCompanyName());
+                }
+            }
+            if (order.getCompanyUserId() != null) {
+                CompanyUser companyUser = companyUserService.selectCompanyUserById(order.getCompanyUserId());
+                if (companyUser != null) {
+                    CompanyDept dept = companyDeptService.selectCompanyDeptById(companyUser.getDeptId());
+                    if (dept != null) {
+                        List<String> names = companyDeptService.selectCompanyDeptNamesByIds(dept.getAncestors());
+                        if (names != null && names.size() > 0) {
+                            //写备注
+                            erpOrder.setSeller_memo(erpOrder.getSeller_memo() + "-" + StringUtils.join(names, ",") + "," + dept.getDeptName());
+                            erpOrder.setRemark(erpOrder.getRemark() + "-" + StringUtils.join(names, ",") + "," + dept.getDeptName());
+                        }
+                    }
+                    erpOrder.setSeller_memo(erpOrder.getSeller_memo() + "-" + companyUser.getNickName());
+                    erpOrder.setRemark(erpOrder.getRemark() + "-" + companyUser.getNickName());
+                }
+            }
+
+            ErpRemarkDTO remarkDTO = new ErpRemarkDTO();
+            remarkDTO.setTotalPrice(order.getTotalPrice());
+            remarkDTO.setPayPrice(order.getPayPrice());
+            remarkDTO.setDeliveryMoney(order.getPayDelivery());
+            remarkDTO.setPayMoney(order.getPayMoney());
+            remarkDTO.setCouponMoney(order.getDiscountMoney());
+            remarkDTO.setOrderId(order.getOrderCode());
+            remarkDTO.setYdMoney(order.getPayPrice().subtract(order.getPayMoney().subtract(order.getPayDelivery())));
+            if (order.getPayTime() != null) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                String format = sdf.format(order.getPayTime());
+                remarkDTO.setPayTime(format);
+            }
+            erpOrder.setSeller_memo(erpOrder.getSeller_memo() + JSONUtil.toJsonStr(remarkDTO));
+            erpOrder.setRemark(erpOrder.getRemark() + JSONUtil.toJsonStr(remarkDTO));
+            erpOrder.setOrder_type_code("order");
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            erpOrder.setDeal_datetime(sdf.format(new Date()));
+            FsStoreOrderItem itemMap = new FsStoreOrderItem();
+            itemMap.setOrderId(order.getOrderId());
+            List<FsStoreOrderItem> orderItems = storeOrderItemService.selectFsStoreOrderItemList(itemMap);
+            List<ErpOrderItem> details = new ArrayList<>();
+            for (FsStoreOrderItem orderItem : orderItems) {
+                FsStoreCartDTO cartDTO = JSONUtil.toBean(orderItem.getJsonInfo(), FsStoreCartDTO.class);
+                ErpOrderItem item = new ErpOrderItem();
+                item.setItem_code(cartDTO.getBarCode().trim());
+                item.setPrice(cartDTO.getPrice().toString());
+                item.setQty(cartDTO.getNum());
+                item.setRefund(0);
+                details.add(item);
+            }
+            erpOrder.setDetails(details);
+            String receiverName = order.getUserName();
+            receiverName = receiverName == null
+                    ? ""
+                    : receiverName.replaceAll("[^\\u4e00-\\u9fa5a-zA-Z0-9]", "");
+
+            if (StringUtils.isBlank(receiverName)) {
+                receiverName = "收件人";
+            }
+
+            erpOrder.setReceiver_name(
+                    receiverName.length() > 20
+                            ? receiverName.substring(0, 20)
+                            : receiverName
+            );
+
+            if (order.getUserPhone().length() > 11) {
+                String phone = decryptPhone(order.getUserPhone());
+                erpOrder.setReceiver_mobile(phone);
+            } else {
+                erpOrder.setReceiver_mobile(order.getUserPhone());
+            }
+
+            String[] address = order.getUserAddress().split(" ");
+            if (address.length < 3) {
+                String kdnAddress = fsUserAddressService.getKdnAddress(order.getUserAddress());
+                Map<String, Object> addDAta = (Map<String, Object>) JSON.parse(kdnAddress);
+                Map<String, String> add = (Map<String, String>) addDAta.get("Data");
+                erpOrder.setReceiver_province(add.get("ProvinceName"));
+                erpOrder.setReceiver_city(add.get("CityName"));
+                erpOrder.setReceiver_district(add.get("ExpAreaName"));
+                erpOrder.setReceiver_address(add.get("StreetName") + add.get("Address"));
+            } else {
+                erpOrder.setReceiver_province(address[0]);
+                erpOrder.setReceiver_city(address[1]);
+                erpOrder.setReceiver_district(address[2]);
+                //处理地址多空隔问题
+                if (address.length > 3) {
+                    StringBuffer addrs = new StringBuffer();
+                    for (int i = 3; i < address.length; i++) {
+                        addrs.append(address[i]);
+                    }
+                    erpOrder.setReceiver_address(addrs.toString());
+                } else if (address.length == 3) {
+                    erpOrder.setReceiver_address(address[2]);
+                }
+            }
+            erpOrder.setReceiver_address(erpOrder.getReceiver_address().replace("+", "加"));
+            erpOrder.setReceiver_address(erpOrder.getReceiver_address().replace("\n", ""));
+
+            // 处方图片生成
+//            String s = fsPrescribeService.PrescribeImg(order.getPrescribeId());
+//            erpOrder.setSeller_memo(erpOrder.getSeller_memo() + "||" + s + "||");
+//            erpOrder.setRemark(erpOrder.getRemark() + "||" + s + "||");
+//            erpOrder.setShop_code(shopCode);
+            erpOrders.add(erpOrder);
+            fsStoreOrderMapper.updateFsStoreOrder(order);
+        }
+        ErpOrderResponse response = new ErpOrderResponse();
+        //推送聚水潭
+        IErpOrderService erpService = erpServiceMap.get(erpType);
+        response = erpService.batchAddOrder(erpOrders);
+        //写入日志
+
+    }
+
     @Override
     public void deliveryOrderItem(String orderCode, String deliveryId, String deliverCode, String deliverName, String itemOrderCode) {
         FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(orderCode);

+ 33 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -34,6 +34,7 @@ import com.fs.common.utils.DictUtils;
 import com.fs.common.utils.ParseUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.common.utils.sign.Md5Utils;
 import com.fs.company.cache.ICompanyTagCacheService;
 import com.fs.company.cache.ICompanyUserCacheService;
 import com.fs.company.domain.*;
@@ -271,6 +272,27 @@ public class FsUserServiceImpl implements IFsUserService {
         } else {
             fsUser.setPhone(null);
         }
+        //密码设置
+        //先判断若密码不为空 直接覆盖
+        FsUser user = fsUserMapper.selectFsUserById(fsUser.getUserId());
+        if(user!=null){
+            if(StringUtils.isNotEmpty(fsUser.getPassword())){
+                if(StringUtils.isNotEmpty(user.getPassword())){
+                    if(user.getPassword().equals(fsUser.getPassword())){
+                        fsUser.setPassword(user.getPassword());
+                    }else {
+                        fsUser.setPassword(Md5Utils.hash(fsUser.getPassword()));
+                    }
+                }else {
+                    //之前无密码直接设置
+                    String encryptedPassword = Md5Utils.hash(fsUser.getPassword());
+                    fsUser.setPassword(encryptedPassword);
+                }
+            }else {
+                //默认密码
+                fsUser.setPassword(Md5Utils.hash("123456"));
+            }
+        }
         if (ObjectUtils.isNotEmpty(fsUser.getLevel()) && fsUser.getLevel().equals(1)) {
             fsUser.setIsShow(1);
         } else {
@@ -769,7 +791,12 @@ public class FsUserServiceImpl implements IFsUserService {
                 }
             }
             if (item.getPhone() != null) {
-                item.setPhone(ParseUtils.parsePhone(item.getPhone()));
+                if (param.getIsAdmin() != null && param.getIsAdmin()) {
+                    //管理员账号电话显示明文
+                    item.setPhone(item.getPhone());
+                }else {
+                    item.setPhone(ParseUtils.parsePhone(item.getPhone()));
+                }
             }
             if (item.getStatus() != null) {
                 String userStatus = DictUtils.getDictLabel("user_status", String.valueOf(item.getStatus()));
@@ -823,7 +850,11 @@ public class FsUserServiceImpl implements IFsUserService {
             // 解密
             if (item.getPhone() != null && item.getPhone() != "") {
                 if (item.getPhone().length() > 11) {
-                    item.setPhone(decryptPhoneMk(item.getPhone()));
+                    if (param.getIsAdmin() != null && param.getIsAdmin()){
+                        item.setPhone(decryptPhone(item.getPhone()));
+                    }else {
+                        item.setPhone(decryptPhoneMk(item.getPhone()));
+                    }
                 } else {
                     item.setPhone(item.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
                 }

+ 1 - 1
fs-service/src/main/java/com/fs/store/vo/h5/FsUserPageListExportVO.java

@@ -29,7 +29,7 @@ public class FsUserPageListExportVO {
     private String nickname;
 
     @ApiModelProperty(value = "手机号码")
-    @Excel(name = "手机号码")
+//    @Excel(name = "手机号码")
     private String phone;
 
     @ApiModelProperty(value = "看课数量")