Explorar o código

Merge remote-tracking branch 'origin/master'

luolinsong hai 1 semana
pai
achega
e3ae1a10ce

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

@@ -916,6 +916,17 @@ public class Task {
         }
     }
 
+    public void CreateWeizouErpPush() {
+        List<Long> omsList = fsStoreOrderMapper.selectFsStoreOrderNoCreateOms();
+        logger.info("推送订单id====>{}", omsList);
+        for (Long l : omsList) {
+            try {
+                fsStoreOrderService.weizouPush(l);
+            } catch (Exception e) {
+                logger.error("推送订单异常:", e);
+            }
+        }
+    }
     public void CreateOmsAndHis() {
         List<Long> omsList = fsStoreOrderMapper.selectFsStoreOrderNoCreateOms();
         logger.info("推送订单id====>{}", omsList);

+ 1 - 1
fs-admin/src/main/java/com/fs/third/controller/WeizouController.java

@@ -51,6 +51,6 @@ public class WeizouController extends BaseController {
         }
         fsStoreOrder.setDeliveryName((String) map.get("deliveryName"));
 
-        return toAjax(fsStoreOrderService.sendGoods(fsStoreOrder, "微走发货同步"));
+        return toAjax(fsStoreOrderService.sendGoodsWeizou(fsStoreOrder, "微走发货同步"));
     }
 }

+ 65 - 0
fs-ipad-task/src/main/java/com/fs/app/controller/CommonController.java

@@ -0,0 +1,65 @@
+package com.fs.app.controller;
+
+
+import com.baidu.dev2.thirdparty.swagger.annotations.Api;
+import com.fs.app.service.IpadSendServer;
+import com.fs.app.task.SendSmsMsg;
+import com.fs.common.core.redis.RedisCacheT;
+import com.fs.course.service.IFsCourseWatchLogService;
+import com.fs.qw.mapper.QwPushCountMapper;
+import com.fs.qw.mapper.QwUserMapper;
+import com.fs.qw.service.impl.AsyncSopTestService;
+import com.fs.sop.mapper.QwSopLogsMapper;
+import com.fs.sop.service.IQwSopLogsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Api("公共接口")
+@RestController
+@RequestMapping(value="/app/common")
+@Slf4j
+public class CommonController {
+
+    private final SendSmsMsg sendSmsMsg;
+    @Autowired
+    private QwUserMapper qwUserMapper;
+    @Autowired
+    private QwSopLogsMapper qwSopLogsMapper;
+    @Autowired
+    private IQwSopLogsService qwSopLogsService;
+    @Autowired
+    private AsyncSopTestService asyncSopTestService;
+
+    @Autowired
+    private RedisCacheT<Long> redisCache;
+    @Autowired
+    private QwPushCountMapper qwPushCountMapper;
+
+
+    @Autowired
+    private IFsCourseWatchLogService watchLogService;
+
+    @Autowired
+    private IpadSendServer sendServer;
+
+    private final Map<Long, Long> qwMap = new ConcurrentHashMap<>();
+
+    @Autowired
+    public CommonController(SendSmsMsg sendSmsMsg) {
+        this.sendSmsMsg = sendSmsMsg;
+    }
+
+
+    @RequestMapping("/startSendSmsMsg/{num}")
+    public void startSendSmsMsg(@PathVariable String  num) {
+        log.info("开始启动定时任务");
+        sendSmsMsg.sendSms(num);
+    }
+
+}

+ 1 - 0
fs-service/src/main/java/com/fs/erp/utils/WeizouApiClient.java

@@ -169,6 +169,7 @@ public class WeizouApiClient {
 
         try (Response response = httpClient.newCall(request).execute()) {
             if (!response.isSuccessful()) {
+                log.error("订单推送失败:"+response.code()+response.message());
                 throw new IOException("订单推送失败,HTTP状态码: " + response.code());
             }
             return response.body().string();

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

@@ -1,5 +1,6 @@
 package com.fs.his.service;
 
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.util.List;
@@ -283,4 +284,8 @@ public interface IFsStoreOrderService
     FsStoreOrder confirmOrder(FsPackageOrder packageOrder,Long doctorId);
 
     List<FsStoreOrder> selectOutTimeOrderList(Integer unPayTime);
+
+    void weizouPush(Long l) throws IOException;
+
+    int sendGoodsWeizou(FsStoreOrder fsStoreOrder, String opeName);
 }

+ 123 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -34,6 +34,7 @@ import com.fs.erp.domain.*;
 import com.fs.erp.dto.*;
 import com.fs.erp.dto.df.*;
 import com.fs.erp.service.IErpOrderService;
+import com.fs.erp.utils.WeizouApiClient;
 import com.fs.event.*;
 import com.fs.gtPush.service.uniPush2Service;
 import com.fs.his.config.FsSysConfig;
@@ -119,6 +120,7 @@ import java.sql.Timestamp;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.fs.his.utils.PhoneUtil.decryptPhone;
@@ -313,6 +315,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
     private Map<Integer, IErpOrderService> erpServiceMap;
     @Autowired
     private IFsStoreOrderScrmService orderScrmService;
+    @Autowired
+    private IFsStoreProductService fsStoreProductService;
     @PostConstruct
     public void initErpServiceMap() {
         erpServiceMap = new HashMap<>();
@@ -4543,4 +4547,123 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         return fsStoreOrderMapper.selectOutTimeOrderList(unPayTime);
     }
 
+    @Override
+    public void weizouPush(Long l) throws IOException {
+        FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderByOrderId(l);
+        if (order.getShippingType() != null && order.getShippingType() == 2)return;
+        WeizouApiPushOrderParam param = new WeizouApiPushOrderParam();
+        param.setPaid(order.getIsPay()).setRealName(order.getUserName()).setPhone(order.getUserPhone())
+                .setFreightPrice(order.getFreightPrice()).setExtendOrderId(order.getOrderId().toString())
+                .setPayType(order.getPayType()==1?"02":"04")
+                .setPaymentType(order.getPayType()==1?"01":"02").setDeliveryType("顺丰快递")
+        ;
+        //商品
+        FsStoreOrderItem itemMap = new FsStoreOrderItem();
+        itemMap.setOrderId(order.getOrderId());
+        List<FsStoreOrderItem> orderItems = storeOrderItemService.selectFsStoreOrderItemList(itemMap);//查订单商品
+        ArrayList<WeizouOrderEntry> orders = new ArrayList<>();
+        List<Long> productIds = orderItems.stream().map(FsStoreOrderItem::getProductId).collect(Collectors.toList());
+        List<FsStoreProduct> fsStoreProducts = fsStoreProductService.getStoreProductInProductIds(productIds);
+        Map<Long, FsStoreProduct> productMap = fsStoreProducts.stream().collect(Collectors.toMap(FsStoreProduct::getProductId,Function.identity()));
+        orderItems.forEach(item -> {
+            WeizouOrderEntry entry = new WeizouOrderEntry();
+            FsStoreProduct fsStoreProduct = productMap.get(item.getProductId());
+            entry.setSkuNumber(fsStoreProduct.getBarCode()).setRetailPrice(fsStoreProduct.getPrice())
+                    .setTaxPrice(fsStoreProduct.getPrice()).setTaxTotalAmount(fsStoreProduct.getPrice().multiply(new BigDecimal(item.getNum())))
+                    .setCount(Integer.parseInt(item.getNum().toString()));
+            orders.add(entry);
+        });
+        //设置地址-省市区
+        String[] address = order.getUserAddress().split(" ");
+        try{
+            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");
+                param.setProvince(add.get("ProvinceName")).setCity(add.get("CityName"))
+                        .setDistrict(add.get("ExpAreaName"))
+                        .setUserAddress(add.get("StreetName") + add.get("Address"));
+
+            } else {
+                param.setProvince(address[0]).setCity(address[1]).setDistrict(address[2]);
+                //处理地址多空隔问题
+                if (address.length > 3) {
+                    StringBuffer addrs = new StringBuffer();
+                    for (int i = 3; i < address.length; i++) {
+                        addrs.append(address[i]);
+                    }
+                    param.setUserAddress(addrs.toString());
+                } else {
+                    param.setUserAddress(address[2]);
+                }
+            }
+        }catch (Exception e){
+            log.error("地址错误:{}",e);
+            throw new CustomException("地址格式不对请正确写入详细地址!!");
+        }
+        param.setEntryList(orders);
+        String s = WeizouApiClient.pushOrder(param);
+        log.info("微走推送结果:{}",s);
+    }
+
+    @Override
+    public int sendGoodsWeizou(FsStoreOrder fsStoreOrder, String opeName) {
+        FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderByOrderId(fsStoreOrder.getOrderId());
+        if (order == null) throw new CustomException("订单不存在");
+        if (order.getStatus() == 2){
+            FsStoreOrder o1 = new FsStoreOrder();
+            o1.setOrderId(fsStoreOrder.getOrderId());
+            o1.setStatus(3);
+            o1.setUpdateTime(new DateTime());
+            o1.setDeliveryCode(fsStoreOrder.getDeliveryCode());
+            o1.setDeliveryName(fsStoreOrder.getDeliveryName());
+            o1.setDeliverySn(fsStoreOrder.getDeliverySn());
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String dateString = formatter.format(new Date());
+            o1.setDeliveryTime(dateString);
+            int i = fsStoreOrderMapper.updateFsStoreOrder(o1);
+            if (order.getCompanyId() != null) {
+                companyService.subtractCompanyMoney(order);
+            }
+            FsStoreOrderLogs Logs = new FsStoreOrderLogs();
+            Logs.setChangeMessage(opeName+" 订单发货");
+            Logs.setOrderId(fsStoreOrder.getOrderId());
+            Logs.setChangeTime(new DateTime());
+            Logs.setChangeType("delivery_goods");
+            Optional.ofNullable(fsStoreOrder.getOperator()).ifPresent(Logs::setOperator);
+            fsStoreOrderLogsMapper.insertFsStoreOrderLogs(Logs);
+            String lastFourNumber = "";
+            if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue())) {
+                lastFourNumber = order.getUserPhone();
+                if (lastFourNumber.length() == 11) {
+                    lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
+                }
+            }
+            expressService.subscribeEspress(order.getOrderCode(), fsStoreOrder.getDeliveryCode(), fsStoreOrder.getDeliverySn(), lastFourNumber);
+            return i;
+        }else {
+            log.info("微走修改快递单号",fsStoreOrder.getDeliverySn());
+            FsStoreOrder o1 = new FsStoreOrder();
+            o1.setOrderId(fsStoreOrder.getOrderId());
+            o1.setDeliveryCode(fsStoreOrder.getDeliveryCode());
+            int i = fsStoreOrderMapper.updateFsStoreOrder(o1);
+            FsStoreOrderLogs Logs = new FsStoreOrderLogs();
+            Logs.setChangeMessage(opeName+"订单单号更新");
+            Logs.setOrderId(fsStoreOrder.getOrderId());
+            Logs.setChangeTime(new DateTime());
+            Logs.setChangeType("delivery_goods");
+            Logs.setOperator("微走快递单号更新");
+            fsStoreOrderLogsMapper.insertFsStoreOrderLogs(Logs);
+            String lastFourNumber = "";
+            if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue())) {
+                lastFourNumber = order.getUserPhone();
+                if (lastFourNumber.length() == 11) {
+                    lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
+                }
+            }
+            expressService.subscribeEspress(order.getOrderCode(), fsStoreOrder.getDeliveryCode(), fsStoreOrder.getDeliverySn(), lastFourNumber);
+            return i;
+        }
+
+    }
 }

+ 1 - 0
fs-service/src/main/java/com/fs/wxwork/utils/WxWorkHttpUtilNew.java

@@ -89,6 +89,7 @@ public class WxWorkHttpUtilNew {
     public static <T> T postWithType(String url, Object jsonBody, TypeReference<T> type, Long serverId) {
         String json = JSON.toJSONString(jsonBody);
         String post = post(url, json, null, serverId);
+        log.info("请求服务器地址:{},请求参数:{},返回数据:{},请求时间:{}", url, json, post, LocalDateTime.now());
         WxWorkResponseCodeDTO respone = JSON.parseObject(post, WxWorkResponseCodeDTO.class);
         if(respone.getErrcode() != 0){
             log.error("请求服务器地址:{},请求参数:{},返回数据:{},请求时间:{}", url, json, JSON.toJSONString(respone), LocalDateTime.now());

+ 1 - 0
fs-service/src/main/resources/application-config-druid-xcsw.yml

@@ -96,6 +96,7 @@ ipad:
   ipadUrl: http://ipad.zgfjfzxhxc.com
   aiApi:
   voiceApi:
+  wxIpadUrl:
   commonApi: http://192.168.0.160:7771
 wx_miniapp_temp:
   pay_order_temp_id: