wjj 3 недель назад
Родитель
Сommit
346b2bf873

+ 54 - 10
fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -375,22 +375,66 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
             fsJstCodPush.setParams(JSON.toJSONString(shopOrderDTO));
             fsJstCodPush.setRetryCount(0);
             fsJstCodPush.setTaskStatus(TaskStatusEnum.PENDING.getCode());
-            fsJstCodPushScrmMapper.insert(fsJstCodPush);
+            if (order.getErpType() == null || order.getErpType() == 1) {
+                // ERP类型为null或者1的才添加到fsJstCodPush推送
+                fsJstCodPushMapper.insert(fsJstCodPush);
+            }
+            //fsJstCodPushScrmMapper.insert(fsJstCodPush);
 
             //shopOrderDTO.setPay(paymentDTO);
         }
 
-        ErpOrderResponseDTO upload = jstErpHttpService.upload(shopOrderDTO);
+//        ErpOrderResponseDTO upload = jstErpHttpService.upload(shopOrderDTO);
+//
+//        if(CollectionUtils.isEmpty(upload.getDatas())) {
+//            log.info("推送ERP返回结果: {}",upload);
+//            throw new IllegalArgumentException("推送ERP返回数不应该为0");
+//        }
+//        ErpOrderResponseDTO.OrderData orderData = upload.getDatas().get(0);
+//
+//        ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+//        erpOrderResponse.setSuccess(true);
+//        erpOrderResponse.setCode(String.valueOf(orderData.getOId()));
+        log.info("推送ERP参数: {}",JSON.toJSONString(shopOrderDTO));
+        ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+        if (order.getErpType() == null || order.getErpType() == 1) {
+            ErpOrderResponseDTO upload = jstErpHttpService.upload(shopOrderDTO);
+            ErpOrderResponseDTO.OrderData orderData = upload.getDatas().get(0);
+            erpOrderResponse.setSuccess(true);
+            erpOrderResponse.setCode(String.valueOf(orderData.getOId()));
+            if(CollectionUtils.isEmpty(upload.getDatas())) {
+                log.info("推送ERP返回结果: {}",upload);
+                throw new IllegalArgumentException("推送ERP返回数不应该为0");
+            }
+        } else if (order.getErpType() == 2) {
+            TlCreateOrderRequest request = new TlCreateOrderRequest();
+            //兔灵要求推送业务员名称
+            if (fsStoreOrder.getCompanyUserId()== null){
+                log.warn("业务员ID为空,订单id:{},订单编号:{}",fsStoreOrder.getId(),fsStoreOrder.getOrderCode());
+            }else {
+                shopOrderDTO.setCompanyUserId(fsStoreOrder.getCompanyUserId());
+                CompanyUser companyUser = companyUserMapper.selectCompanyUserById(fsStoreOrder.getCompanyUserId());
+                if (companyUser != null){
+                    shopOrderDTO.setCompanyUserName(companyUser.getNickName());
+                }
 
-        if(CollectionUtils.isEmpty(upload.getDatas())) {
-            log.info("推送ERP返回结果: {}",upload);
-            throw new IllegalArgumentException("推送ERP返回数不应该为0");
+            }
+            request.setData(Arrays.asList(toTlOrderItem(shopOrderDTO)));
+            request.setCorpId("LwMAMdlBIH7agxn2t9N4Zv40");
+            //兔灵的聚水潭服务器id
+            TlOptions options = new TlOptions();
+            options.setJstServerId(1);
+            request.setOptions(options);
+            Boolean syncedOrderToJst = tlErpOrderService.syncOrderToJst(request);
+            if (syncedOrderToJst){
+                erpOrderResponse.setSuccess(true);
+                erpOrderResponse.setCode("兔灵ERP");
+            } else {
+                erpOrderResponse.setSuccess(false);
+            }
+            //HttpResponse response = tlErpOrderService.syncOrderToJst(request);
+            //upload = parseResponse(response,  new TypeReference<CommonResponse<ErpOrderResponseDTO>>() {});
         }
-        ErpOrderResponseDTO.OrderData orderData = upload.getDatas().get(0);
-
-        ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
-        erpOrderResponse.setSuccess(true);
-        erpOrderResponse.setCode(String.valueOf(orderData.getOId()));
         return erpOrderResponse;
     }
 

+ 17 - 0
fs-service/src/main/java/com/fs/erp/service/impl/TlErpOrderServiceImpl.java

@@ -12,6 +12,8 @@ import com.fs.erp.dto.tl.dto.JstRefundGoodsDTO;
 import com.fs.erp.service.TlErpOrderService;
 import com.fs.his.domain.FsStoreOrder;
 import com.fs.his.service.IFsStoreOrderService;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +31,9 @@ public class TlErpOrderServiceImpl implements TlErpOrderService {
     @Autowired
     private IFsStoreOrderService storeOrderService;
 
+    @Autowired
+    private IFsStoreOrderScrmService storeOrderScrmService;
+
     //测试兔灵ERP
     //@Value("${jst.api.url:https://api.xiangyue.life/api}")
 
@@ -138,6 +143,18 @@ public class TlErpOrderServiceImpl implements TlErpOrderService {
             //物流同步
             storeOrderService.deliveryOrder(fsStoreOrder.getOrderCode(),request.getLId()
                     ,request.getLcId(),request.getLogisticsCompany(),request.getSendDate());
+        } else {
+            FsStoreOrderScrm orderScrm = storeOrderScrmService.selectFsStoreOrderByOrderCode(request.getSoId());
+            if (orderScrm != null && orderScrm.getIsPay() == 1) {
+                FsStoreOrderScrm map = new FsStoreOrderScrm();
+                map.setId(orderScrm.getId());
+                map.setExtendOrderId(request.getOId().toString());
+                //更新ERP订单号
+                storeOrderScrmService.updateFsStoreOrder(map);
+
+                //物流同步
+                storeOrderScrmService.deliveryOrder(orderScrm.getOrderCode(),request.getLId(),request.getLcId(),request.getLogisticsCompany());
+            }
         }
 
         //遍历处理items

+ 1 - 1
fs-service/src/main/java/com/fs/his/mapper/FsStoreOrderMapper.java

@@ -1156,7 +1156,7 @@ public interface FsStoreOrderMapper
     @Select("select * from fs_store_order where  `status`=2 and extend_order_id is not null and extend_order_id != '' and (erp_type = 1 or erp_type is null) ")
     List<FsStoreOrder> selectWdtOmsOrderdeliveryOp();
 
-    @Select("select * from fs_store_order_scrm where  `status`=1 and extend_order_id is not null and extend_order_id != '' ")
+    @Select("select * from fs_store_order_scrm where  `status`=1 and extend_order_id is not null and extend_order_id != '' and (erp_type = 1 or erp_type is null) ")
     List<FsStoreOrderScrm> selectWdtOmsOrderdeliveryOpScrm();
 
     @Select("select * from fs_store_order where  `status`=2 and extend_order_id is not null and `is_merge` = 0 and extend_order_id != '' ")

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStoreOrderScrm.java

@@ -363,4 +363,7 @@ public class FsStoreOrderScrm extends BaseEntity
 
     //档期标签名称
     private String tagNames;
+
+    //1 聚水潭 2 兔灵
+    private Integer erpType;
 }

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreCartScrmMapper.java

@@ -91,7 +91,7 @@ public interface FsStoreCartScrmMapper
            "<foreach collection='array' item='id' open='(' separator=',' close=')'>#{id}</foreach>"+
             "</script>"})
     int delCart(Long[] ids);
-    @Select("select c.*,p.cate_id,p.product_name,p.image as product_image,p.temp_id,p.product_type,v.price,v.sku as product_attr_name,v.image as product_attr_image,v.stock,v.cost,v.integral,v.weight,v.volume,v.bar_code,v.group_bar_code,v.brokerage,v.brokerage_two,v.brokerage_three from fs_store_cart_scrm c left join fs_store_product_scrm p on p.product_id=c.product_id left join fs_store_product_attr_value_scrm v on v.id=c.product_attr_value_id where find_in_set(c.id,#{ids})")
+    @Select("select c.*,p.cate_id,p.product_name,p.image as product_image,p.temp_id,p.product_type,v.price,v.sku as product_attr_name,v.image as product_attr_image,v.stock,v.cost,v.integral,v.weight,v.volume,v.bar_code,v.group_bar_code,v.brokerage,v.brokerage_two,v.brokerage_three,p.erp_type from fs_store_cart_scrm c left join fs_store_product_scrm p on p.product_id=c.product_id left join fs_store_product_attr_value_scrm v on v.id=c.product_attr_value_id where find_in_set(c.id,#{ids})")
     List<FsStoreCartQueryVO> selectFsStoreCartListByIds(String ids);
     @Update("update  fs_store_cart_scrm set is_pay=1 where find_in_set(id,#{cartIds})")
     void updateIsPay(String cartIds);

+ 33 - 3
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -140,6 +140,7 @@ import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.fs.his.utils.PhoneUtil.*;
@@ -742,6 +743,8 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             Boolean isIntegral = false;
             //组合数据
             FsStoreOrderScrm storeOrder = new FsStoreOrderScrm();
+            //订单类型
+            storeOrder.setErpType(carts.get(0).getErpType());
             storeOrder.setStoreHouseCode("CK01");
             storeOrder.setCompanyId(param.getCompanyId());
             storeOrder.setCompanyUserId(param.getCompanyUserId());
@@ -1261,7 +1264,15 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
     @Override
     public void deliveryOrder(String orderCode, String deliveryId, String deliverCode, String deliverName) {
         FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(orderCode);
-        if (order != null && order.getStatus() == OrderInfoEnum.STATUS_1.getValue()) {
+        boolean flag = false;
+        if (order != null){
+            if (Objects.equals(order.getStatus(), OrderInfoEnum.STATUS_1.getValue()) && order.getErpType() == 1) {
+                flag = true;
+            } else if (order.getErpType() == 2 && (order.getStatus() == OrderInfoEnum.STATUS_1.getValue() || order.getStatus() == OrderInfoEnum.STATUS_2.getValue())) {
+                flag = true;
+            }
+        }
+        if (flag) {
             FsExpressScrm express = expressService.selectFsExpressByOmsCode(deliverCode);
             if (express != null) {
                 order.setDeliveryName(deliverName);
@@ -1938,6 +1949,8 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             return R.error("订单:" + order.getOrderCode() + ",已推送erp/订单状态不正确");
         }
         ErpOrder erpOrder = getErpOrder(order);
+        //获取ERP类型 1-聚水潭 2-兔灵
+        erpOrder.setErpType(order.getErpType());
         if (erpOrderService == jSTOrderService) {
             erpOrder.setShop_code(erpConfig.getErpJstShopCode());
         }
@@ -1947,9 +1960,17 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         //写入日志
         logger.info("ErpCreate:" + order.getOrderCode() + ":" + JSONUtil.toJsonStr(response));
         //支付成功后 将订单号写入待发货的REDIS中
-        redisCache.setCacheObject(DELIVERY + ":" + response.getCode(), order.getOrderCode());
+        //redisCache.setCacheObject(DELIVERY + ":" + response.getCode(), order.getOrderCode());
+        ////写入外部订单号
+        //order.setExtendOrderId(response.getCode());
         //写入外部订单号
-        order.setExtendOrderId(response.getCode());
+        if (order.getErpType() == 2) {
+            order.setExtendOrderId(response.getCode());
+        } else {
+            //支付成功后 将订单号写入待发货的REDIS中
+            redisCache.setCacheObject(DELIVERY + ":" + response.getCode(), order.getOrderCode());
+            order.setExtendOrderId(response.getCode());
+        }
         fsStoreOrderMapper.updateFsStoreOrder(order);
         return R.ok("订单:" + order.getOrderCode() + ",创建erp订单成功");
     }
@@ -2518,6 +2539,15 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
     @Override
     public R createSalesOrder(CompanyUser companyUser, String cateIds, Integer orderType, Integer orderMedium) {
         List<FsStoreCartQueryVO> carts = cartMapper.selectFsStoreCartListByIds(cateIds);
+        logger.info("carts:{}",carts);
+        if (CollectionUtils.isNotEmpty(carts) && carts.size() > 1) {
+            List<FsStoreCartQueryVO> collect = new ArrayList<>(carts.stream().collect(Collectors.toMap(FsStoreCartQueryVO::getErpType, Function.identity(), (v1, v2) -> v1))
+                    .values());
+            logger.info("collect:{}",collect);
+            if (collect.size() > 1) {
+                return R.error("ERP类型不一致,不能合并制单");
+            }
+        }
         String uuid = IdUtil.randomUUID();
         redisCache.setCacheObject("createOrderKey:" + uuid, companyUser.getCompanyId() + "-" + companyUser.getUserId(), 120, TimeUnit.DAYS);
         redisCache.setCacheObject("orderCarts:" + uuid, carts, 120, TimeUnit.DAYS);

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreCartQueryVO.java

@@ -65,5 +65,7 @@ import java.math.BigDecimal;
 
     private BigDecimal changePrice;
 
+    private Integer erpType;
+
 
 }

+ 5 - 1
fs-service/src/main/resources/mapper/hisStore/FsStoreOrderScrmMapper.xml

@@ -94,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="zyyHuifuId"    column="zyy_huifu_id"    />
         <!--<result property="orderMedium"    column="order_medium"    />-->
         <result property="tagNames"    column="tag_names"    />
+        <result property="erpType"    column="erp_type"    />
     </resultMap>
 
     <sql id="selectFsStoreOrderVo">
@@ -108,7 +109,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                company_id,company_user_id,is_package,package_json,item_json,order_type,package_id,finish_time,delivery_status,
                delivery_pay_status,delivery_time,delivery_pay_time,delivery_pay_money,tui_money,tui_money_status,delivery_import_time,
                tui_user_id,tui_user_money_status,order_create_type,store_house_code,dept_id,is_edit_money,customer_id,is_pay_remain,
-               delivery_send_time,certificates,schedule_id,div_amount, div_huifu_id,zyy_div_amount,zyy_huifu_id,tag_names from fs_store_order_scrm
+               delivery_send_time,certificates,schedule_id,div_amount, div_huifu_id,zyy_div_amount,zyy_huifu_id,tag_names,erp_type from fs_store_order_scrm
     </sql>
 
     <select id="selectFsStoreOrderList" parameterType="FsStoreOrderScrm" resultMap="FsStoreOrderResult">
@@ -269,6 +270,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="zyyDivAmount != null">zyy_div_amount,</if>
             <if test="zyyHuifuId != null">zyy_huifu_id,</if>
             <if test="tagNames != null">tag_names,</if>
+            <if test="erpType != null">erp_type,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="orderCode != null and orderCode != ''">#{orderCode},</if>
@@ -360,6 +362,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="zyyDivAmount != null">#{zyyDivAmount},</if>
             <if test="cycle != null">#{cycle},</if>
             <if test="tagNames != null">#{tagNames},</if>
+            <if test="erpType != null">#{erpType},</if>
          </trim>
     </insert>
 
@@ -458,6 +461,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="divAmount != null and divAmount != ''">div_amount = #{divAmount},</if>
             <if test="zyyDivAmount != null and zyyDivAmount != ''">zyy_div_amount = #{zyyDivAmount},</if>
             <if test="tagNames != null and tagNames != ''">tag_names = #{tagNames},</if>
+            <if test="erpType != null and erpType != ''">erp_type = #{erpType},</if>
         </trim>
         where id = #{id}
     </update>